質問

Haskellは、変数を未来に結合するアリスの能力に相当しますか?

val a = spawn foo;

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

Haskellがチャネルとスレッドをサポートしていることは知っています。私は、アリスのような自然な構文を、将来に値をバインドし、詳細に対処せずにそれを計算するためにスレッドを生成することを望んでいます。

役に立ちましたか?

解決

使用できます par から Control.Parallel のように

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

これは、その実行時のヒントです a 別のスレッドで評価できます。

他のヒント

面白いことに、私はサイモン・マーロウの新しい投稿を読んでいました: 明示的な未来を備えたHaskellの並列プログラミング. 。どうやら彼と他の人たちは、より自然で明示的であることを意図したいくつかの新しい並行プログラミングの抽象化に取り組んでいます。 parpseq 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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top