Skip to content

Instantly share code, notes, and snippets.

@Beyamor
Created December 9, 2013 03:59
Show Gist options
  • Save Beyamor/7867221 to your computer and use it in GitHub Desktop.
Save Beyamor/7867221 to your computer and use it in GitHub Desktop.
class Maybe:
def __init__(self, value=None):
self.value = value
if self.value:
self.just = True
else:
self.just = False
@staticmethod
def return_(value):
return Maybe(value)
@staticmethod
def nothing():
return Maybe()
def __ge__(self, fn):
if self.just:
return fn(self.value)
else:
return Maybe()
def test():
def f(x):
return Maybe.return_(x + 1)
def g(x):
return Maybe.return_(x * 2)
value1 = (Maybe.return_(1) >= f) >= g
value2 = (Maybe.return_(1) >= (lambda x: f(x) >= g))
print (value1.value == value2.value)
test()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment