将 Let-form 转换为过程窗体



我在将以下内容从 let 形式转换为过程时遇到问题

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

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

例如:

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

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

首先,你必须修复它。

( 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)

最新更新