本文へ移動
Hikari リファレンス

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]