Haskell には、変数を未来にバインドする Alice の機能と同等のものがありますか?
val a = spawn foo;
ここで、foo は何らかの関数です。
Haskell がチャネルとスレッドをサポートしていることは知っています。Alice の構文と同じくらい自然な構文で、値を未来にバインドし、スレッドを生成して詳細を処理することなくそれを計算することを望んでいます。
Haskell には、変数を未来にバインドする Alice の機能と同等のものがありますか?
val a = spawn foo;
ここで、foo は何らかの関数です。
Haskell がチャネルとスレッドをサポートしていることは知っています。Alice の構文と同じくらい自然な構文で、値を未来にバインドし、スレッドを生成して詳細を処理することなくそれを計算することを望んでいます。
par
のControl.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