12

Haskell 是否具有相当于 Alice 将变量绑定到未来的能力?

val a = spawn foo;

其中 foo 是一些函数。

我知道 Haskell 支持通道和线程;我希望语法和 Alice 一样自然,可以将值绑定到未来并产生一个线程来计算它,而无需处理细节。

4

3 回答 3

15

您可以使用parfromControl.Parallel

a `par` f a b c
where
  a = foo

a这是对可以在另一个线程中评估的运行时的提示。

于 2010-08-21T13:20:38.930 回答
12

有趣的是,我刚刚阅读了 Simon Marlow 的一篇新文章:Haskell 中的并行编程与明确的未来。显然,他和其他人一直在研究一些新的并行编程抽象,这些抽象旨在比parpseqAPI 更自然和明确。

于 2010-08-21T14:31:09.713 回答
7

不在标准库中,但

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
于 2010-08-21T14:41:19.417 回答