2013-04-25 1 views
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)))) 

Что это значит?Scheme: Что оценивает эта функция?

Попытка:

Вызов (foo 10) ->(lambda(w) (+ x w) y), где х = 3, у = 13

вызова ((lambda(w) (+ (* x w) y) x) -> (где местный х 1) ->

+2

Скобки в первом 'let *' неверны, поэтому невозможно сказать, что он должен делать. Пожалуйста, исправьте это. – Barmar

+0

Надеюсь, новое редактирование помогло. Извини за это. –

ответ

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 

See here

Не знаю, откуда у вас 52 из.

 Смежные вопросы

  • Нет связанных вопросов^_^