2014-01-31 3 views
0

Можете ли вы помочь с этим выражением:Пытаясь понять это лямбда-выражение в схеме

((lambda (a b) (* ***(b a)*** a)) 5 (lambda (c) (+ c (* 2 c)))) 

теперь я понимаю это выражение = 75, и я понимаю, что первый лямбда принимает к аргументам и Ь, где а = 5 и b = (lambda (c) (+ c (* 2 c))) = 15 единственная часть выражения, которое я не понимаю, - это часть, которую я выделил полужирным шрифтом и курсивом. В основных терминах, как будет выглядеть выражение?

ответ

3

Этот фрагмент кода:

(b a) 

выражает тот факт, что b является функцией, и она применяется к параметру a. В частности, значение a является 5, а значение b функция:

(lambda (c) (+ c (* 2 c))) 

Таким образом, замена получает:

(* (b a) a) 
(* ((lambda (c) (+ c (* 2 c))) 5) 5) 
(* (+ 5 (* 2 5)) 5) 
75 
+1

, что имеет смысл! спасибо за помощь! – user3259073

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