and
、or
、およびを表現するのは簡単not
ですif
( のローカル バインディングの助けを借りてor
)。逆が本当かどうか知りたいです。私の素朴な最初の試み:
(if test conseq altern) => (or (and test conseq) altern)
ただし、test
が non-#f
であり、conseq
isである場合#f
、翻訳は と評価されますがaltern
、これは正しくありません。
の短絡の性質を維持しながら、正しい値に評価される変換はありif
ますか?