Haskell是否具有相当于Alice将变量绑定到未来的能力?Haskell的期货
val a = spawn foo;
其中foo是一些函数。
我知道Haskell支持通道和线程;我希望Alice的语法像Alice的一样自然,将价值绑定到未来,并产生一个线程来计算它,而不必处理细节。
Haskell是否具有相当于Alice将变量绑定到未来的能力?Haskell的期货
val a = spawn foo;
其中foo是一些函数。
我知道Haskell支持通道和线程;我希望Alice的语法像Alice的一样自然,将价值绑定到未来,并产生一个线程来计算它,而不必处理细节。
您可以使用从Control.Parallel
par
在
a `par` f a b c
where
a = foo
这是一个提示到a
可能在另一个线程来评估运行。
谢谢,效果很好 – Hosiers 2010-08-21 14:42:03
有趣的是,我刚刚阅读了Simon Marlow的新帖子:Parallel programming in Haskell with explicit futures。显然,他和其他人一直在研究一些新的并行程序抽象,这些抽象旨在比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
“平行”是Haskell平台的一部分,常规懒惰期货('par')已经是其中的一部分。 – 2010-08-21 15:23:13
为什么标准库中没有'Future' api?对于我来说,这比我更容易理解。 – 2013-05-10 06:26:13
无关,但实际上的Clojure有那么些为好。 – Rayne 2010-08-21 13:28:25
我从来没有考虑过这个问题,但我怀疑懒惰的IO可以做得很干净,尽管它可能有不安全的InterleaveIO。 – 2010-08-22 19:59:07