6章パイプライン――関数型プログラミングPipeline

制約

  • 大きな問題は、関数抽象化を使って分解される。関数は入力を受け取り、出力を生成する。
  • 関数間では状態を共有しない。
  • パイプラインでは数学の関数合成fgを忠実に反映した関数の組み合わせにより大きな問題を解決する。

プログラム

 1 #!/usr/bin/env python
 2 import sys, re, operator, string
 3
 4 #
 5 # 関数
 6 #
 7 def read_file(path_to_file):
 8     """
 9     入力ファイルのパス名を受け取り
10     その内容全体を文字列として返す
11     """
12     with open(path_to_file) as f:
13         data = f.read()
14     return data
15
16 def filter_chars_and_normalize(str_data):
17     """
18     文字列を受け取り
19     すべての非英数字を空白に、英字を小文字に置き換えたコピーを返す
20     """
21     pattern = re.compile(r'[\W_]+')
22     return pattern.sub(' ', str_data).lower()
23
24 def scan(str_data):
25     """
26     文字列を受け取り、
27     単語を探索して、単語のリストを返す
28     """
29 return ...

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.