试图在方案中理解这个lambda表达式

时间:2014-01-31 22:15:28

标签: lambda scheme racket

你能帮忙解决这个问题:

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

现在我理解这个表达式= 75并且我理解第一个lambda采用参数a和b,其中a = 5和b =(lambda(c)(+ c(* 2 c)))= 15唯一的部分我不明白的表达是我用粗体和斜体字表示的部分。在基本术语中,表达式将如何读取?

1 个答案:

答案 0 :(得分:3)

此片段:

(b a)

表示b是一个函数,它正在应用于a参数。特别是,a的值为5b的值为函数:

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

所以,取代我们获得:

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