gpt4 book ai didi

Haskell:非严格的 bool 运算

转载 作者:行者123 更新时间:2023-12-04 09:05:30 28 4
gpt4 key购买 nike

无论如何在Haskell中定义如下函数?

or True      True      = True
or True undefined = True
or True False = True
or undefined True = True
or undefined False = undefined
or undefined undefined = undefined
or False True = True
or False undefined = undefined
or False False = False

我目前没有它的用​​例(尽管我会对它感兴趣),如果可能的话,我只是感兴趣。

最佳答案

这在标准 Haskell 中是不可能的,但可以通过不安全的技巧来完成,在 lub 中实现。 Conal Elliott 的图书馆。

基本上,您编写两个函数:

orL True _ = True
orL False x = x

orR = flip orL

然后你可以定义 or a b成为 lub (关于“定义”顺序的最小上限) orL a borR a b .

在操作上,它并行运行两个计算并选择第一个成功的,杀死另一个。

即使按照您的建议工作,它也有重要的缺点。首先, lub只有当它的论点一致时才安全(除非底部相等)。如果您采取 lub True False ,结果将是不确定的,从而违反了纯度!其次,在某些情况下,并行运行两个计算的性能开销可能会成为主导(例如,尝试计算大型列表的 foldr or False!)。

关于Haskell:非严格的 bool 运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10951353/

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