やっぱり Lisp In Small Piecesを読むことにしました。
評価機の最初の一歩です。Lispの基本的なルールはこの2つです。
- 変数はシンボルによって表現される
- 関数適用は、最初の項が適用する関数を表していて残りがその関数に適用する引数を表しているリストで表現される。
評価器コードの断片はこうなります。数値、文字列、文字、真偽値、ベクターは自己評価が可能なのでそのままの値を返します。
(define (evaluate e env) (if (atom? e) (cond ((symbol? e) (lookup e env)) ((or (number? e) (string? e) (char? e) (boolean? e) (vector? e) e) (else (wrong "Cannot evaluate" e)) ) (case (car e) .....
lookupは、環境から変数の値を探す関数、wrong はエラーを処理する関数です。