並列計算を使って、テキストに含まれる文字の出現頻度を数えましょう。
並列処理とは、順番に実行することもできる物事を、並行して行うことです。よくある例が、文字の出現頻度を数えることです。並列処理を活用して、テキストの配列に含まれる各文字の出現頻度の合計を計算しましょう。
大文字と小文字の違いや、文字以外のものは無視して文字を数え、小文字からその出現回数への辞書を返します。文字はUnicodeスカラー値として扱います。Unicodeの正規化は必要ありません。
与えられたitemsを、純粋なtask関数を使って処理するには、roc-parallelプラットフォームのpf.Parallel.map!(items, { workers, task })を使います。処理は、複数のスレッド(workersで指定します)にまたがって並行に実行されます。すべてのitemsを処理し終えると、結果は入力と同じ順序で返されます。編集する必要があるのはParallelLetterFrequency.rocだけです。
この演習は、他のほとんどの演習と違い、副作用のある関数を使います。テストはroc testではなく、roc --opt=speed parallel-letter-frequency-test.rocで実行します。Rocのコードが返したエラーは、通常とは異なる形式でプラットフォームから報告されます。
並行処理の別の側面、つまり共有状態を安全に更新することを扱っているbank-account演習も、覗いてみるとよいでしょう。