12

Haskell には、変数を未来にバインドする Alice の機能と同等のものがありますか?

val a = spawn foo;

ここで、foo は何らかの関数です。

Haskell がチャネルとスレッドをサポートしていることは知っています。Alice の構文と同じくらい自然な構文で、値を未来にバインドし、スレッドを生成して詳細を処理することなくそれを計算することを望んでいます。

4

3 に答える 3

15

parControl.Parallelように使用できます

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

aこれは、別のスレッドで評価できるランタイムへのヒントです。

于 2010-08-21T13:20:38.930 に答える
12

おかしなことに、私はSimon Marlowによる新しい投稿を読んでいました:明示的な先物を使用したHaskellでの並列プログラミングparどうやら彼と他の人たちは、pseqAPIよりも自然で明示的であることを目的としたいくつかの新しい並列プログラミングの抽象化に取り組んできました。

于 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 に答える