0
(define test
     (lambda()
       (let* ((x 1)
              (y 3)
              (z 5)
              (foo (lambda (n)
                     (let* ((x 3)
                            (y (+ x n))
                            (g (lambda(w) (+ (* x w) y))))
                       g))))
        ((foo 10) x))))

这意味着什么?

试图:

调用(foo 10)-> (lambda(w) (+ x w) y),其中 x = 3,y = 13

呼叫((lambda(w) (+ (* x w) y) x)->(本地 x 为 1)->

4

1 回答 1

1
(foo 10) => (lambda (w) (+ (* x w) y) ; where x = 3 and y = 13
         => (lambda (w) (+ (* 3 w) 13)

((foo 10) x) => (+ (* 3 w) 13) ; where w is 1
             => (+ (* 3 1) 13)
             => 16

看这里

不知道你从哪里得到52。

于 2013-04-25T00:59:23.273 回答