9章継続――継続渡しKickForward
[†1] パイプラインスタイルの変形で、パイプラインスタイルよりも多くの制約がある。
制約
- 各関数は追加のパラメータ(通常は最後)として別の関数を受け取る。
- パラメータで渡された関数を最後に呼び出す。
- 現在の関数の出力に相当するものを、呼び出す関数のパラメータとして渡す。
- 関数のパイプラインとして問題を解決するが、次に適用する関数は現在の関数のパラメータとして与えられる。
プログラム
1 #!/usr/bin/env python 2 import sys, re, operator, string 3 4 # 5 # The functions 6 # 7 def read_file(path_to_file, func): 8 with open(path_to_file) as f: 9 data = f.read() 10 func(data, normalize) 11 12 def filter_chars(str_data, func): 13 pattern = re.compile(r'[\W_]+') 14 func(pattern.sub(' ', str_data), scan) 15 16 def normalize(str_data, func): 17 func(str_data.lower(), remove_stop_words) 18 19 def scan(str_data, ...
Get プログラミング文体練習 ―Pythonで学ぶ40のプログラミングスタイル now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.