Scheme - What is wrong with my attempt to extend this declaration?

Posted by CppLearner on Stack Overflow See other posts from Stack Overflow or by CppLearner
Published on 2012-03-29T05:26:04Z Indexed on 2012/03/29 5:29 UTC
Read the original article Hit count: 147

Filed under:
|
|

This is a homework question.

Question enter image description here

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!

© Stack Overflow or respective owner

Related posts about homework

Related posts about Scheme