NScLisper機能一覧
Mark and SweepによるGCが実装されていますが、現在シンボル(の含む文字列)はGCの対象外です。
とはいえ、シンボルを機械的に作る方法が用意されていないので、実質使い切れないかと思います。
末尾再帰/呼び出しの最適化が中途半端にされています。
末尾呼出を続けていればメモリを使い切ることはありませんが、
新しくセルを消費するので、GCを引き起こす要因となります。
フリーモード以外で、一回の入力に対し、GCが5回起こるごとに、終了するかどうか尋ねます。
フリーモードでは、無限ループに陥ったときはプロセスを強制終了させてください。
データ型
スペシャルフォーム
- define (関数定義のsyntax sugarあり)
- cond
- if
- quote (引用符'のsyntax sugarあり)
- let (名前付きletなし)
- begin
- lambda
- and
- or
- set!
関数
- car
- cdr
- cons
- eq? (数値比較も行うのでeqvを兼ねる)
- atom?
- +
- - (2引数のみ)
- *
- / (2引数のみ)
- mod
- >
- >=
- <
- <=
- set-car!
- set-cdr!
- boolean?
- pair?
- number?
- symbol?
- procedure?
拡張関数
以下の関数はフリーモードのみで使用可能です。
- caar
- cadr
- cdar
- addr
- list
- length
- list-ref
- list-tail
- append
- list?
- null?
- assq
- assoc
- map
- memq
- member
- not
- equal?