Entry 3133
Monad example in Python
Submitted by anonymous
on Feb. 4, 2010 at 3:36 a.m.
Language: Python. Code size: 839 bytes.
#!/usr/local/bin/python class Undefined: pass class Maybe: def __init__(self, x=Undefined): self.value = x def apply(self, f): if not self.is_defined: return Maybe() else: return Maybe(f(self.value)) def __repr__(self): if not self.is_defined: return '<Undefined>' else: return repr(self.value) @property def is_defined(self): return not self.value is Undefined def monad_aware(f): def fprime(x): return x.apply(f) return fprime if __name__ == '__main__': @monad_aware def double(x): return 2*x x = Maybe() print double(x) assert(not double(x).is_defined) x = Maybe(2) print double(x) assert(double(x).is_defined) assert(double(x).value == 4)
This snippet took 0.00 seconds to highlight.
Back to the Entry List or Home.