Haskell による並列・並行プログラミング #1 担当:satun さん
2章 基本の並列性:Evalモナド
2.1 遅延評価と弱頭部正規形
式を評価すると、その式を表現するサンクが作られる。
サンクは seq 式 () でつぶせる。
サンクはその値が必要となるまで未評価のまま。評価されると値に置き換わる。
seq は弱頭部正規形WHNFまで評価する。
NF に評価するのは deepseq
サンクの各部分はセルと呼ばれる(この本では?)
並列プログラミングは遅延評価を基本とするスタイルと、Parモナドを用いたデータフロー記述が考えられる
2.2 Evalモナド、rpar、rseq
rparを並べてreturnすると、rparの部分の実行が始まった途端にretrunから処理が帰ってくる
rseqで値の評価を行うと、returnまでにその計算を待つ。
GHC で並列性を得るためには、 -threaded オプションをつける
RTS -N2 フラグはGHCに2コアを使って実行することを指定する
-rtsopts をつけてコンパイルすることで、バイナリに+RTS オプションをつけることができる
引数列 +RTS -s で処理の統計情報が出る
次回: ThreadScope を用いた数独プログラムのイベントログ可視化から