gpt4 book ai didi

haskell - Par函数底层逻辑

转载 作者:行者123 更新时间:2023-12-02 12:18:06 24 4
gpt4 key购买 nike

par 函数如何工作?它的签名是:

par :: a -> b -> b.

但这很奇怪。为什么不是:

par::(a -> b) -> a -> b

(获取函数,在新线程中执行并返回结果)?

另一个问题,这是正常的haskell多线程吗?

enter image description here

最佳答案

par 用于推测并行性,并且依赖于惰性。

您推测未评估的 a 应该在您忙于处理 b 时计算。

稍后在您的程序中您可能会再次引用a,它就会准备就绪。

这是一个例子。我们希望将 3 个数字相加。每个数字的计算成本都很高。我们可以并行计算它们,然后将它们加在一起:

main = a `par` b `par` c `pseq` print (a + b + c)
where
a = ack 3 10
b = fac 42
c = fib 34

fac 0 = 1
fac n = n * fac (n-1)

ack 0 n = n+1
ack m 0 = ack (m-1) 1
ack m n = ack (m-1) (ack m (n-1))

fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n-2)

关于haskell - Par函数底层逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23954646/

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