KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Some time ago I looked over Haskell docs and found it's functional composition operator really nice. So I've implemented this tiny decorator: from functools import partial class _compfunc(partial): def __lshift__(self, y): f = lambda *args, **kwargs: self.func(y(*args, **kwargs)) return _compfunc(f) def __rshift__(self, y): f = lambda *args, **kwargs: y(self.func(*args, **kwargs)) return _compfunc(f) def composable(f): return _compfunc(f) @composable def f1(x): return x * 2 @composable def f2(x): return x + 3 @composable def f3(x): return (-1) * x @composable def f4(a): return a + [0] print (f1 >> f2 >> f3)(3) #-9 print (f4 >> f1)([1, 2]) #[1, 2, 0, 1, 2, 0] print (f4 << f1)([1, 2]) #[1, 2, 1, 2, 0] The problem: without language support we can't use this syntax on builtin functions or lambdas like this: ((lambda x: x + 3) >> abs)(2) The question: is it useful? Does it worth to be discussed on python mail list?
Tags (comma-separated)
Save Edits
Cancel