
200
8 章 Toolz を使って小さなノートパソコンでビッグデータを処理する方法
す。パイプと組み合わせれば、
1
つの関数呼び出しで
k-mer
をカウントできます。
from toolz import curried as c
k = 7
counts = tz.pipe('data/sample.fasta', open,
c.filter(is_sequence),
c.map(str.rstrip),
c.map(c.sliding_window(k)),
tz.concat, c.map(''.join),
tz.frequencies)
でも、ちょっと待ってください。
toolz.curried
からのたくさんの
c.function
呼び出しは、いっ
たい何でしょうか。
8.4
カリー化:ストリーミングのスパイス
本章の前方で、カリー化された
map
関数を少しだけ使っています。これは、与えられた関数を、
シーケンスの各要素に適用するものです。すぐ前のコードには、カリー化された関数呼び出しを以
前の例より多用しているので、ここでその意味を解説しておきましょう。カリー化という名称は、
例のブレンドされたスパイスに因むわけではありません(コードを刺激的にしてくれるのは確かで
すが)。その概念を発明した数学者の
Haskell Curry
に因んでいます。
Haskell Curry
は、
Haskell
というプログラミング言語の名前の元になった人でもあり、この言語ではなんとすべての関数がカ
リー化されています。
「カリー化」というのは、ある関数を ...