(rontolisp) docs

REPL

ファイルを指定せずに --source-language scheme を付けると Scheme の REPL が起動します。 値は write の表記でエコーされます。定義は何もエコーせず、未規定値 -- display、set!、 for-each、どの分岐も選ばれなかった if が返すもの。自作の手続きの末尾がそれらでも同じ -- もエコーしません。フォームは複数行にまたがれます。エラーはスタックオーバーフローも含めて 報告され、定義を保ったままセッションが続きます。(exit) で終了します。 入力をパイプで与えると、Common Lisp の REPL と同じく スクリプト実行器になります: プロンプトを出さず、エラーは標準エラーへ、失敗したフォームが あれば終了ステータスは 1 です。

$ rontolisp --source-language scheme
scheme> (define (square x) (* x x))
scheme> (map square '(1 2 3))
(1 4 9)
scheme> (set! square -)
scheme> (square 5)
-5
scheme> (list #t #f '() 'Sym)
(#t #f () Sym)
scheme> (define (show x) (display x) (newline))
scheme> (show 'done)
done
scheme> (exit)

これら 12 ライブラリがエクスポートする名前 -- それに加えて、 Structure and Interpretation of Computer Programs(SICP)互換の名前(どの (import ...) にも属さない。--scheme-standard r7rs では除く)は最初からすべて見えており、 プロンプトで入力した (import ...) は名前を追加するだけです。別々のプロンプトで入力した 定義は、1 つのファイルに書いた場合と同じく、順序によらず互いを参照できます。フォームは 入力時点で確定するため、ファイルとの違いが 2 点あります: 組み込み手続き(square)を再定義しても、 それ以前に入力したフォームには及びません。また、末尾位置で自分自身を呼ぶ手続きは、後から set! で 置き換えても、保持されている古いコピーは自分自身へのループを続けます。