Haskell 是否具有相当于 Alice 将变量绑定到未来的能力?
val a = spawn foo;
其中 foo 是一些函数。
我知道 Haskell 支持通道和线程;我希望语法和 Alice 一样自然,可以将值绑定到未来并产生一个线程来计算它,而无需处理细节。
Haskell 是否具有相当于 Alice 将变量绑定到未来的能力?
val a = spawn foo;
其中 foo 是一些函数。
我知道 Haskell 支持通道和线程;我希望语法和 Alice 一样自然,可以将值绑定到未来并产生一个线程来计算它,而无需处理细节。
您可以使用par
fromControl.Parallel
a `par` f a b c
where
a = foo
a
这是对可以在另一个线程中评估的运行时的提示。
有趣的是,我刚刚阅读了 Simon Marlow 的一篇新文章:Haskell 中的并行编程与明确的未来。显然,他和其他人一直在研究一些新的并行编程抽象,这些抽象旨在比par
和pseq
API 更自然和明确。
不在标准库中,但
http://ghcmutterings.wordpress.com/2010/08/20/parallel-programming-in-haskell-with-explicit-futures/
data Future a = Future a
fork :: Eval a -> Eval (Future a)
fork a = do a' <- rpar (runEval a); return (Future a')
join :: Future a -> Eval a
join (Future a) = a `pseq` return a