我想定义一个具有以下属性的函数
symmetricLazyOr :: Bool -> Bool -> Bool
symmetricLazyOr True _|_ === True
symmetricLazyOr _|_ True === True
否则它就像普通的or
一样工作。
在Haskell中甚至可能吗?
更新
这个问题主要关注语义而不是实现细节。直观地,or
应该是对称的,这对于所有给定的or a b === or b a
和a
来说都是b
。但是,自or _|_ True === _|_
or True _|_ === True
以来{H}中的情况并非如此。