This is a homework question.
Question
My attempt (the whole file): http://pastebin.com/vt3Q3dqs
If you search let var = exp1 in body, that's the function I need to extend according to the question.
When I test the sample code above, I get an error apply-env: No binding for y
(eval "let x = 30
in let x = -(x,1)
y = -(x,2)
in -(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)
As you can see, when the interperter reads the last line -(x,y) it complains because there is no binding. What did I do wrong?
I know this is really long language, but if anyone can kindly lead me to the right direction would be really really nice.
Thank you!