【问题标题】:Convert Let-form to procedure form将 Let-form 转换为过程形式
【发布时间】:2015-01-10 19:14:46
【问题描述】:

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

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

【问题讨论】:

  • 贴出来的代码连编译都没有,请先修复

标签: scheme procedure let


【解决方案1】:

首先,你必须修复它。

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

【讨论】:

    【解决方案2】:

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

    例如:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多