Haskellを勉強してきて、ようやくモナドの雰囲気がわかってきたので、Maybeモナドのような計算をPythonでやってみる。 #!/usr/bin/env python # -*- coding: utf-8 -*- # instance Monad Maybe where # return = Just # fail = Nothing def Maybe(x): return Just(x) if x else Nothing() class Just: def __init__(self, x): self.value = x def __repr__(self): return "Just(%r)" % self.value # (Just x) >>= f = f x def bind(self, f): return f(self.value) # '>>=' の代わりに