func.py/func_py/lib.py
2025-06-15 22:39:15 +02:00

50 lines
887 B
Python

#======= Decoration ========
def log(f):
def g(*args):
r = f(*args)
print(">> %s %s -> %s" % (str(f).split(" ")[1], str(list(args)), str(r)))
return r
return g
#========= Composition =========
def fix1(f, v):
def g(*args):
r = f(*([v]+list(args)))
return r
return g
def curry(func, numArgs):
if numArgs == 1: return func
def f1(v):
return curry(fix1(func, v), numArgs-1)
return f1
def comp(g,f):
def r(*args, **kwargs):
return g(f(*args, **kwargs))
return r
#======== Operations ===========
def add(a, b):
return a + b
def multi(a, b):
return a * b
def Monade():
#Monade, (M a -> (a -> M b) -> M a)
def returm(x):
return [x]
def bind(m, f):
return returm(list(map(f,m)))
return returm, bind