Haskell的未来

Hos*_*ers 12 parallel-processing concurrency haskell alice future

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

val a = spawn foo;
Run Code Online (Sandbox Code Playgroud)

其中foo是一些功能.

我知道Haskell支持频道和线程; 我希望语法像Alice一样自然地将值绑定到未来并生成一个线程来计算它而不必处理细节.

Dan*_*kov 15

您可以使用parControl.Parallel作为

a `par` f a b c
where
  a = foo
Run Code Online (Sandbox Code Playgroud)

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


Dan*_*att 12

有趣的是,我刚刚读了Simon Marlow发表的一篇新文章:Haskell中的并行编程以及明确的未来.显然,他和其他人一直在说意图是不是更自然和明确了一些新的并行编程抽象parpseqAPI的.


Ale*_*nov 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
Run Code Online (Sandbox Code Playgroud)

  • "parallel"是Haskell平台的一部分,而常规的懒惰期货(`par`)已经是其中的一部分. (2认同)