Scheme(実験的)
実験的機能です。 rontolisp は R7RS-small の一部 -- (scheme base)、
(scheme write)、(scheme read)、(scheme char)、(scheme inexact)、(scheme cxr)、(scheme lazy)、(scheme case-lambda)、(scheme process-context) の exit、
(scheme eval)、(scheme repl)、(scheme file)
-- を、Scheme プログラムを全バックエンドで動かせる最小限の範囲で読みます。
準拠は意図的に部分的で、互換性の約束はありません。Scheme プログラムを JVM や WebAssembly で
試す用途に使い、動き続けてほしいものは Common Lisp で書いてください。
.scm ファイルは Scheme として読まれます。それ以外のファイルは --source-language scheme
で指定します。言語はファイル単位で決まるので、1 つのプログラムに両方を混在できます。
rontolisp hello.scm # interpreter
rontolisp hello.scm -o Hello.class && java Hello # JVM
rontolisp hello.scm -o hello.wasm && wasmtime run hello.wasm
rontolisp hello.scm -o hello-c.wasm --component && wasmtime run hello-c.wasm
rontolisp prog.txt --source-language scheme # any extension
--no-gc は拒否されます。このバックエンドにはペア・シンボル・クロージャがありません。
このセクションの例はブラウザ上で実行できます。Run はそれぞれを独立したプログラムとして、 新しいインタプリタで実行します。playground は language で Scheme を選ぶと Scheme を読みます。
(0 1 4 9 16)
(3 true #f "s")
このセクション
- REPL -- 対話セッションとスクリプト実行モード。
- 規格 --
--scheme-standard: この処理系の方言か、厳密な R7RS か。 - 構文 -- リーダー、特殊形式、
import。 - ライブラリ -- import できる 12 の R7RS ライブラリと、それぞれが 提供するもの。
- Structure and Interpretation of Computer Programs(SICP)互換 --
importなしで見える MIT/SICP 由来の名前。 - eval --
(eval datum env)と、それが受け付ける環境。 - 仕様との差異 -- この実装が R7RS から外れている点と、まだ未実装のもの。
- Common Lisp との混在 -- Common Lisp のファイルから Scheme の手続きを 呼ぶ方法、およびその逆。
- リファレンス -- 手続き、定数、構文キーワードごとに 1 ページ。