PythonによるYコンビネータの仕組みの(多分)わかりやすい説明より。
F = lambda f: lambda n: n if n < 2 else f(n - 1) * n Y = lambda f: (lambda x: lambda m: f(x(x))(m))(lambda x: lambda m: f(x(x))(m)) print(Y(F)(5))
def add_curried(x): def _add(y): return x+y return _add print(add_curried(2)(3)) def add_curried2(x): return lambda y:x + y print(add_curried2(2)(3)) add_curried3 = lambda x:lambda y:x + y print(add_curried3(2)(3))
#if pr = lambda s:s namenum = lambda x: (x==1 and pr("one")) \ or (x == 2 and pr("two")) \ or (pr("other")) print(namenum(1)) print(namenum(2)) print(namenum(3)) #for #for e in lst:func(e) lst=[1,2,3,4] print(list(map(lambda x:x*x,lst))) #順次作業 def f1(): print("f1") def f2(): print("f2") def f3(): print("f3") # let's create an execution utility function do_it =lambda f: f() list(map(do_it, [f1,f2,f3]))# map()-based action sequence