为什么不能在支持函数应用程序的解释器中模拟“if-then-else”构造作为函数? Scheme中的“let”功能是否类似于“if-then-else”?
答案 0 :(得分:4)
Scheme中的if
语句如下所示:
(if <predicate> <consequent> <alternate>)
并且定义为<consequent>
仅在<predicate>
不为假并且<alternate>
评估时 em>仅当<predicate>
为假时。所以你可以看到像
(if #t (display "okay") (shut-down-the-nsa))
永远不会真正关闭国家安全局。
但是,如果if
是一个函数,例如:
(<operator> <operand> …)
然后总是评估每个<operand>
。在if
语句的上下文中,这意味着<consequent>
和<alternate>
都会被评估 - 当时if
并不多。