0

引用符を使用してリストを定義します。次に、cdr と car で取得したこのリストの要素を使用して、ラムダ演算を定義しようとします。しかし、定義されたラムダ操作は、パラメーターの数についてエラーを出します。エラーメッセージは次のとおりです。

;プロシージャ #[compound-procedure XX] が 1 つの引数で呼び出されました。正確に 2 つの引数が必要です。

(define x '(lambda (n) (+ n 1)))
(cadr x) ;mit scheme interpreter displays (n)
(caddr x) ; this results in (+ n 1)
((lambda (cadr x)(caddr e)) 2) ; this is the problematic part which results in an error.

解決策: 一時的な環境を作成し、その環境でラムダ式の仮パラメータと実パラメータをバインドし、その環境でラムダ式の本体を解釈します。

4

2 に答える 2