【发布时间】:2014-03-29 20:03:21
【问题描述】:
为什么不能在支持函数应用的解释器中模拟“if-then-else”构造作为函数? Scheme中的“let”函数是否类似于“if-then-else”?
【问题讨论】:
-
您可以将
if实现为一个函数,但如果这样做,您需要将then和else部分函数实现,以便您可以延迟它们的评估。
标签: if-statement scheme interpreter let
为什么不能在支持函数应用的解释器中模拟“if-then-else”构造作为函数? Scheme中的“let”函数是否类似于“if-then-else”?
【问题讨论】:
if 实现为一个函数,但如果这样做,您需要将then 和else 部分函数实现,以便您可以延迟它们的评估。
标签: if-statement scheme interpreter let
Scheme 中的if 语句如下所示:
(if <predicate> <consequent> <alternate>)
并且被定义为仅当<predicate> 不为假时,<consequent> 才被评估,并且仅当<alternate> 被评估 987654326@ 是假的。所以你可以看到类似的东西
(if #t (display "okay") (shut-down-the-nsa))
永远不会真正关闭 NSA。
但是,如果if 是一个函数,比如:
(<operator> <operand> …)
然后每个<operand> 总是被评估。在if 语句的上下文中,这意味着<consequent> 和<alternate> 都将被评估——那么if 就不会太多了。
【讨论】: