【发布时间】:2014-07-04 04:54:57
【问题描述】:
我想定义一个具有以下属性的函数
symmetricLazyOr :: Bool -> Bool -> Bool
symmetricLazyOr True _|_ === True
symmetricLazyOr _|_ True === True
否则它就像正常的or一样工作。
在 Haskell 中甚至有可能吗?
更新
这个问题关注语义而不是实现细节。直观地说,or 应该是对称的,这意味着or a b === or b a 对于所有给定的a 和b。但是,这在 Haskell 中并非如此,因为 or _|_ True === _|_ 而 or True _|_ === True。
【问题讨论】:
-
我不知道你到底在问什么(你的“_ | _” - 底部是什么?) - 如果你在谈论底部,那么问题是:你必须从某个地方开始(通常从案例的顶部开始),然后你就会遇到麻烦 - 乍一看我认为这是不可能的,但我会考虑一下
-
嗯......你可以破解一些东西,但在叉子或其他东西中尝试两个参数,但这对我来说感觉很丑
-
顺便说一句:问题的更好标题可能是“对称”非严格“或)
-
我很确定这是不可能的。你的用例是什么?
-
@JanDvorak 简单:并行计算、地毯搜索等
标签: haskell