25章検疫――純粋関数と不純関数Quarantine

制約

  • プログラムの中核となる関数は、IOを含めて、いかなる種類の副作用も持たない。
  • すべてのIOアクションは、純粋関数から明確に分離された計算シーケンスに保持される必要がある。
  • IOを持つすべてのシーケンスは、メインプログラムから呼び出されなければならない。

プログラム

 1 #!/usr/bin/env python
 2 import sys, re, operator, string
 3
 4 #
 5 # 検疫(quarantine)クラス
 6 #
 7 class TFQuarantine:
 8     def __init__(self, func):
 9         self._funcs = [func]
10
11     def bind(self, func):
12         self._funcs.append(func)
13         return self
14
15     def execute(self):
16         def guard_callable(v):
17             return v() if callable(v) else v
18
19         value = lambda : None
20         for func in self._funcs:
21             value = func(guard_callable(value))
22         print(guard_callable(value))
23
24 #
25 # 関数定義
26 #

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.