【发布时间】:2019-11-22 02:17:31
【问题描述】:
我想在 Haskell 中同时打印控制台上两个不同功能的实时输出。
有可能吗?
您可以使用此代码...
import Control.Parallel
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)
我希望在不同的内核上同时计算 a 和 b,并同时在控制台上打印它们的进度。
【问题讨论】:
-
一个函数一般根本无法打印到控制台。
IO操作可以,但如果您想要并行IO,那么您需要查看并发,而不是并行性。
标签: multithreading haskell io functional-programming multicore