Bool -> Bool symmetricLazyOr True _|_ === True symmetricL-6ren">
gpt4 book ai didi

haskell - 如何在 Haskell 中实现 "symmetric non-strict or"

转载 作者:行者123 更新时间:2023-12-04 10:18:03 27 4
gpt4 key购买 nike

我想定义一个具有以下属性的函数

symmetricLazyOr :: Bool -> Bool -> Bool
symmetricLazyOr True _|_ === True
symmetricLazyOr _|_ True === True

否则它就像正常的 or .

在 Haskell 中甚至有可能吗?

更新

这个问题关注语义而不是实现细节。直观地说, or应该是对称的,这意味着 or a b === or b a对于所有给定的 ab .然而,这在 Haskell 中不是这样,因为 or _|_ True === _|_or True _|_ === True .

最佳答案

换句话说,您正在寻找一个函数,给定两个参数,尝试对它们都求值,并且如果任一参数为真,则为真?尤其是 True只要至少有一个参数是True,就会返回结果。而不是底部?

假设这是正确的,这是可能的,但不是纯粹的。为了实现它,您需要竞争两个线程来评估每个分支。 unamb包有一些处理这种情况的函数(包括并行或函数 por )。另一个选项是 lvish ,据我了解,这在这种情况下也应该有效。

关于haskell - 如何在 Haskell 中实现 "symmetric non-strict or",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24566943/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com