잘 알려진 이디엄인가요? this $ that $ otherThing
,이 경우apply2ws 잘 알려진 하스켈 관용구?
applyTwice someFunction head tail $ this $ that $ otherThing
목록을 반환하고, 나는 두 끝을 공급 한 후 그 목록의 머리와 꼬리를 모두 가지고 가고,하고 싶은 : 여기
applyTwice :: (a -> b -> c) -> (d -> a) -> (d -> b) -> (d -> c)
applyTwice g f1 f2 p = g (f1 p) (f2 p)
은 일반적인 사용의
someFunction
.
applyTwice
은 표준 관용구입니까, 아니면 복잡한 계산 결과의 머리와 꼬리를 모두 자연스럽게 가져갈 수 있습니까? 이 작업을 수행하는 표준 방법으로 where
을 사용하고 있습니까?
확실히 StackOverflow에 속해 있습니다. 이것이 하스켈의 이론에 관한 것이라면 화제가 될 수도 있지만 관용구와 사용법에 대해 묻는 것은 확실히 그렇습니다. – jmite
'applyTwice g f1 f2 = (g.f1) <*> f2'. 그래서, 예, 아니오. combinatory logic과 lambda-calculus의 [** S ** 결합 자] (https://en.wikipedia.org/wiki/SKI_combinator_calculus)입니다. –
관련된 하스켈 연결자는 Data.Function.on :''(g''f''xy = g (fx) (fy)''''그러나 그것은 "하나의 함수, 두 개의 인자"를 가지고 다른 방향으로 나아 간다. –