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 に答える