python-plumb: cf9d1455053520f9a397822a73c221ae66ae9ccd

     1: from core import curry
     2: 
     3: def build():
     4:   def call(env):
     5:     return lambda func, arg: curry(func)(interpret(env, arg))
     6: 
     7:   def interpret(env, x):
     8:     funcs = {int:   lambda a, b: env[x],
     9:              list:  plumb,
    10:              tuple: chain}
    11:     if type(x) in funcs:
    12:       return funcs[type(x)](env, x)
    13:     return x
    14: 
    15:   def chain(env, calls):
    16:     return reduce(call(env), calls, lambda x: x)
    17: 
    18:   def plumb_(env, expr, arg):
    19:     if len(expr) is 0:
    20:       return arg
    21:     return chain([arg] + env, expr)
    22: 
    23:   plumb = curry(plumb_)
    24: 
    25:   return curry(lambda expr: plumb([], expr))
    26: 
    27: plumb = build()
    28: del(build)

Generated by git2html.