몇 시간 전 하스켈 문서를 살펴본 결과 기능 구성 연산자가 정말 멋지다는 것을 알았습니다.파이썬에서 구문을 기능하도록 설탕을 넣는 것이 좋은 생각입니까?
이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]
문제는 : 우리는이 같은 내장 기능 또는 람다에이 구문을 사용할 수 없습니다 언어 지원없이 가 :
((lambda x: x + 3) >> abs)(2)
질문 : 입니다 그래서 나는이 작은 장식을 구현했습니다 유용할까요? 파이썬 메일 목록에서 논의 할 가치가 있습니까?
...하지만 다음과 같이 쓸 수도 있습니다. print (composable (lambda x : x + 3) >> composable (abs)) (- 4) – si14