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.