9章継続――継続渡しKickForward

†1

[†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.