29 lines
503 B
Python
29 lines
503 B
Python
|
|
class Monad:
|
|
|
|
def __init__(self, bind, value):
|
|
self.__bind = bind
|
|
self.__m = unit(value)
|
|
|
|
def bind(self, f):
|
|
self.__m = self.__bind(self.__m, f)
|
|
return self
|
|
|
|
def __lshift__(self, f):
|
|
self.__m = self.__bind(self.__m, f)
|
|
return self
|
|
|
|
|
|
"""
|
|
if __name__ == "__main__":
|
|
Monad(bind, 1) << (lambda x: x+10) << (lambda x: 2*x)
|
|
|
|
add = lambda a, b: a+b
|
|
print(list(zip([1,2,3],[4,5,6])))
|
|
|
|
print(list(zipWith(add,[1,2,3],[4,5,6])))
|
|
"""
|
|
|
|
|
|
|