将Let-form转换为过程形式

时间:2014-11-13 15:21:33

标签: scheme procedure let

我无法将以下内容从let form转换为procedure

( let (( a 5)
b (* 5 2))
(let (b (* a b)
(c 10))
(+ b c)))

2 个答案:

答案 0 :(得分:0)

让表达式只是lambda的语法糖。

例如:

(let ((a 1)
      (b 2))
  (* a b))

相同
((lambda (a b) (* a b)) 1 2)

答案 1 :(得分:0)

首先,你必须解决它。

( let (( a 5)
(b (* 5 2)))
(let ((b (* a b))
(c 10))
(+ b c)))

let的定义是

(let (( variable-name1 value1)
 (variable-name2 value2)
 (variable-namen valuen))
 body)

转换为lambda是

((lambda (variable-name1 variable-name2 variable-namen) body) value1 value2 valuen)