これは宿題に関する質問です。スキーム - この宣言を拡張しようとすると何が問題になりますか?
質問
私の試み(全ファイル):http://pastebin.com/TS6mByEj
あなたがlet var = exp1 in body
を検索する場合、それは私が質問に応じて拡張する必要がある機能です。
Iは上記のサンプルコードをテストする場合、私はエラーapply-env: No binding for y
(evalの「LET X =中、x = 30 をさせ得る - (X、1) Y = - (X、2) はに - (x、y)は「)
; The following is execution log
The-next-two-lines-shows-var-and-exp1
(x)
(#(struct:const-exp 30))
diff-exp
#(struct:var-exp x)
#(struct:const-exp 1)
diff-exp
#(struct:var-exp x)
#(struct:const-exp 2)
The-next-two-lines-shows-var-and-exp1
(x y)
(#(struct:diff-exp #(struct:var-exp x) #(struct:const-exp 1)) #(struct:diff-exp #(struct:var-exp x) #(struct:const-exp 2)))
diff-exp
#(struct:var-exp x)
#(struct:var-exp y)
私は、これは本当に長い言語ですけど、誰もが親切に正しい方向に私を導くことができれば本当にいいだろう。
ありがとうございました!
UPDATE
右私は評価し、エラーを打つ前に、新しい環境env1
は彼らのこの
(#(struct:extend-env x #(struct:num-val 29) #(struct:extend-env x #(struct:num-val 30) #(struct:extend-env i #(struct:num-val 1) #(struct:extend-env v #(struct:num-val 5) #(struct:extend-env x #(struct:num-val 10) #(struct:empty-env))))))
#(struct:extend-env y #(struct:num-val 28) #(struct:extend-env x #(struct:num-val 30) #(struct:extend-env i #(struct:num-val 1) #(struct:extend-env v #(struct:num-val 5) #(struct:extend-env x #(struct:num-val 10) #(struct:empty-env)))))))
ような#(struct:extend-env y #(struct:num-val 28)
です。したがってcar env1
の一部ではないことを除いて、評価される環境にはy
が存在します。それはまだ
cdr env1
であり、私のコードは、あなたが問題に指を持っている
申し訳ありませんが、あなたの質問が間違っていたため、私の回答は削除されました。私の回答は役に立たなかったでしょう。 –
@KshitijMehtaこれは問題ありません。あなたはまだ返事にあなたの時間がかかりました:)誰かが私にここで良い頭を与えることを願っています!ありがとう。 – CppLearner