def test_curry(self): a1 = F.curry(add)(1) self.assertEqual(a1(2, 3), 6) a2 = F.curry(a1)(3) self.assertEqual(a2(4), 8) a3 = F.curry(add)(1, 1) self.assertEqual(a3(1), 3)
def acm_filter(obj, filter_cluster='.*', filter_vhost='.*', filter_lbname='.*', filter_route='.*', filter_worker='.*'): '''Apply given filters to given acm object''' f=curry(acm_filter, \ filter_cluster=filter_cluster, \ filter_vhost=filter_vhost, \ filter_lbname=filter_lbname, \ filter_route=filter_route, \ filter_worker=filter_worker) if isinstance(obj, list): map(f, obj) if isinstance(obj, Cluster): match = re.search(filter_cluster, obj.name) if match is None: obj.setMark(True) f(obj.servers) elif isinstance(obj, Server): f(obj.vhosts) elif isinstance(obj, VHost): match = re.search(filter_vhost, obj.name) if match is None: obj.setMark(True) f(obj.lbs) elif isinstance(obj, LoadBalancer): match = re.search(filter_lbname, obj.name) if match is None: obj.setMark(True) f(obj.workers) elif isinstance(obj, Worker): match_url = re.search(filter_worker, obj.Worker_URL) match_route = re.search(filter_route, obj.Route) if match_url is None or match_route is None: obj.setMark(True)
def test_curry(): def args(*a): return a cargs = functional.curry(args, 5) cargsab = cargs('a')('b') assert cargsab('c')('d')('e') == ('a', 'b', 'c', 'd', 'e') assert cargsab('x')('y')('z') == ('a', 'b', 'x', 'y', 'z') assert cargsab('c')('d')('e') == ('a', 'b', 'c', 'd', 'e') assert cargsab('x')('y')('z') == ('a', 'b', 'x', 'y', 'z') def add(a, b): return a + b cadd = functional.curry(add) assert cadd(10)(5) == 15 and cadd(20)(5) == 25 assert functional.map(functional.curry(add)(10), functional.range(1, 11)) == \ [ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 ]
def __acm_apply_func(obj, func=__myPrint): ''' Apply a function to all instances of an acm object''' f = curry(__acm_apply_func, func=func) if isinstance(obj, list): map(f, obj) elif not obj.mark: func(obj) if isinstance(obj, Cluster): f(obj.servers) elif isinstance(obj, Server): f(obj.vhosts) elif isinstance(obj, VHost): f(obj.lbs) elif isinstance(obj, LoadBalancer): f(obj.workers)
def acm_set(obj, lf=None, ls=None, wr=None, rr=None, dw=None): '''Set values on an acm object''' f = curry(__set_val, lf=lf, ls=ls, wr=wr, rr=rr, dw=dw) __acm_apply_func(obj, f)
def acm_set(obj, lf=None, ls=None, wr=None, rr=None, dw=None, w_lf=None, w_ls=None, w_wr=None, w_rr=None, w_status_I=None, w_status_N=None, w_status_D=None, w_status_H=None): '''Set values on an acm object''' f = curry(__set_val, lf=lf, ls=ls, wr=wr, rr=rr, dw=dw, w_lf=w_lf, w_ls=w_ls, w_wr=w_wr, w_rr=w_rr, w_status_I=w_status_I, w_status_N=w_status_N, w_status_D=w_status_D, w_status_H=w_status_H) __acm_apply_func(obj, f)
from maybe import Maybe from data import DATA_Num, DATA_Str, DATA_List from my_funcs import * DATA_1 = Maybe(DATA_Num) print '--------traditional--------' run_f1 = lift_n_resolve_fs(*[sq,rt,sq,cube]) run_f2 = lift_n_resolve_fs(*[sq,rt,sq,rt_m]) print run_f1 (DATA_1) print run_f2 (DATA_1) print '---------------------------' print '--------functional---------' print Functional()(sq)(DATA_1) print Functional() >> sq >> cube >> sq >> DATA_1 print Functional() >> curry(lambda x,y:x+y, 5) >> sq >> DATA_1 print Functional(False)(rt_m)(rt_m)(rt_m)(rt_m)(Maybe(-4)) print Functional(False)(rt_m)(DATA_1) print Functional().unlift_all()(rt_m)(DATA_1) print '---------------------------' print '--------functional-break---' print Functional()(cube)(rt)(cube)(DATA_1) print '---------------------------' print '--------functional-generic-' print Functional()(cube)(lambda x:x*x)(lambda x:x-1)(DATA_1) print '---------------------------' def print_state(a): print '\=> SIDE EFFECT: ', a print '--------side effect--------'