【发布时间】:2011-02-04 15:53:21
【问题描述】:
用if 表示and、or 和not 很容易(借助or 的本地绑定)。我想知道反过来是不是真的。我天真的第一次尝试:
(if test conseq altern) => (or (and test conseq) altern)
但是,如果test 不是#f 而conseq 是#f,则转换结果为altern,这是不正确的。
在保持if 的短路特性的同时,是否有一个转换为正确的值?
【问题讨论】:
-
也许(或(和测试(或结果#t))交替)?
-
啊,但是
(if #t #f #t)将评估为#t。不过,这些是我正在寻找解决问题的技巧。
标签: scheme boolean-logic syntactic-sugar