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