Chez Scheme Transcript [Thu Mar 10 13:52:41 2011] > (lambda (n) n) # > ((lambda (n) n) 3) 3 > (+ 3 4) 7 > (+ 3) 3 > ((lambda (n) (+ 1 n)) 3) 4 > (define plusOne (lambda (n) (+ n 1))) > plusOne # > + # > - # > * # > car # > (plusOne 5) 6 > ((lambda (n k) (+ n k)) 2 3) 5 > (lambda (n) (lambda (m) ( + m n))) # > ((lambda (n) (lambda (m) (+ m n))) 3) # > (((lambda (n) (lambda (m) (+ m n))) 3) 4) 7 > (define add3 (lambda (n) (+ n 3))) > (add3 7) 10 > (define addGenerator (lambda (n) (lambda (m) (+ n m)))) > (define add42 (addGenerator 42)) > add42 # > (add42 8) 50 > (define add77 (addGenerator 77)) > (add77 (add42 8)) 127 > (define double-any (lambda (f x) (f x x))) > (double-any (+ 3)) Error: incorrect number of arguments to #. Type (debug) to enter the debugger. > (double + 3) Error: variable double is not bound. Type (debug) to enter the debugger. > (double-any + 3) 6 > (double-any * 3) 9 > (double-any car '(3)) Error: incorrect number of arguments to #. Type (debug) to enter the debugger. > (double-any list '(3)) ((3) (3)) > (double-any list '3) (3 3) > (double-any double-any double-any) break> r > (let ([x 3]) x) 3 > (let ([x 3] [y 4]) (+ x y)) 7 > ((lambda (x y) (+ x y)) 3 4) 7 > ((lambda (f) (f 3)) (lambda (n) n)) 3 > ((lambda (n) n) 3) 3 > (transcript-off)