Haskellでストリーム処理を抽象化したPipesライブラリを使ってみる。
今回は、都道府県の面積のCSVファイルを読んだ。
stack build
stack exec hello-pipes < prefs.csv
で実行できる。 面積はkm2単位で、小数点以下は丸めた。
Pipesはメモリ消費が固定で、かなり効率的らしい。
かなり抽象化されているので、応用範囲が広く、
一般的なパースにも、並列プログラミングにも使えるらしい。
今回も、CSVのパーサにcassavaという
ライブラリを組み合わせて使っている。
ただし、抽象的なだけあって、イメージしにくく難易度高め。 Producerが値を作って、Pipeで変換して、 Consumerで吐き出しているらしいが、 それぞれの関数の役割がすっきり理解できていない。 本来はドキュメントをもっとちゃんと読まないといけないが、 今回はまず使ってみるだけ。