以下の Haskell コードでは、いくつかのコアが使用されていることを示すおもちゃとして、par
とpseq
を使用してマルチコアの数計算を行っています。これを Scala で表現する最も簡単で慣用的な方法は何でしょうか? scalaz.concurrent
Futures と Promises は有望に思えます (エヘム)。私は、たとえばthis exampleを見てきましたが、すべてを説明するドキュメントが見つかりません。
import Control.Parallel
main = a `par` b `par` c `pseq` print (a + b + c)
where
a = ack 3 10
b = fac 42
c = fib 35
fac 0 = 1
fac n = n * fac (n-1)
ack 0 n = n+1
ack m 0 = ack (m-1) 1
ack m n = ack (m-1) (ack m (n-1))
fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n-2)