作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Bool -> Bool symmetricLazyOr True _|_ === True symmetricL-6ren">
我想定义一个具有以下属性的函数
symmetricLazyOr :: Bool -> Bool -> Bool
symmetricLazyOr True _|_ === True
symmetricLazyOr _|_ True === True
or
.
or
应该是对称的,这意味着
or a b === or b a
对于所有给定的
a
和
b
.然而,这在 Haskell 中不是这样,因为
or _|_ True === _|_
而
or True _|_ === True
.
最佳答案
换句话说,您正在寻找一个函数,给定两个参数,尝试对它们都求值,并且如果任一参数为真,则为真?尤其是 True
只要至少有一个参数是True
,就会返回结果。而不是底部?
假设这是正确的,这是可能的,但不是纯粹的。为了实现它,您需要竞争两个线程来评估每个分支。 unamb包有一些处理这种情况的函数(包括并行或函数 por
)。另一个选项是 lvish ,据我了解,这在这种情况下也应该有效。
关于haskell - 如何在 Haskell 中实现 "symmetric non-strict or",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24566943/
我是一名优秀的程序员,十分优秀!