私はスキームのスキーム評価器に取り組んでいます。let を実装する必要があります。変数名、入力する値、および関数の本体が得られるように解析しました。解析された情報を使用してラムダ関数を返す必要があるため、次のコードがあります。
(define (eval-let exp env)
((lambda (let-variables (let-bindings exp)) (let-body exp)) (let-exp (let-bindings exp))))
(let-variables (let-bindings exp)) は変数名のリスト (例: '(xy)) に評価されるため、基本的には次のように評価します。
((lambda '(x y) (* x y)) '(2 3))
スキームインタープリターは単純に次のように述べています: #%plain-lambda: not an identifier in: (let-bindings exp) は、値のリストではなく、一連の識別子が必要なためだと推測しています。
値のリストを一連の識別子に変換するにはどうすればよいですか?