std:parallel リファレンス
import { map } := "std:parallel" で取得する不変データの並列変換モジュール。map で List の各要素を独立な mapper で並列変換する (結果順は逐次 map と同一)。
filter
filter(list, pred, chunks)
filter: { List(a), EffectConduit({ a | Bool }), Int | List(a) }
List のうち pred が真を返す要素だけを集めた新 List を返す。結果は
list.filter(pred) と同一だが内部で並列評価する。pred は独立 (純粋) である
ことを契約とする。chunks はチャンク数 (0 = 自動。省略できない)。
>>> parallel.filter([1, 2, 3, 4], { x | x % 2 == 0 }, 0) [2, 4]
fold
fold(list, init, fn, chunks)
fold: { List(a), a, EffectConduit({ a, a | a }), Int | a }
List を fn で畳んだ値を返す。内部でチャンクごとに畳んでから昇順に畳む。
fn は結合律を満たすことを契約とする (満たさない fn の結果は未規定)。init は
最終畳み込みの起点として一度だけ使う。chunks はチャンク数 (0 = 自動。省略できない)。
>>> parallel.fold([1, 2, 3, 4], 0, { a, b | a + b }, 0) 10
map
map(list, fn, chunks)
map: { List(a), EffectConduit({ a | b }), Int | List(b) }
List の各要素を fn で変換した新 List を返す。結果は list.map(fn) と要素順が
同一だが内部で並列評価する。mapper は独立 (純粋) であることを契約とする
(要素間の副作用順は未規定)。chunks はチャンク数 (0 = 自動。省略できない)。
>>> parallel.map([1, 2, 3, 4], { x | x * 2 }, 0) [2, 4, 6, 8]