curry f a b = f(a,b)
생각 (카레 기준) : 그래서이 유형을 이해하는 데 도움이 필요
(a -> b -> c) -> (a, b) -> c
: 카레 기능은 F를 (A, B), 그래서 내가 생각했던 유형이 기능 팹 소요 반환 왜 형식이 바뀌는가? :
((a, b) -> c) -> (a -> b -> c)
curry f a b = f(a,b)
생각 (카레 기준) : 그래서이 유형을 이해하는 데 도움이 필요
(a -> b -> c) -> (a, b) -> c
: 카레 기능은 F를 (A, B), 그래서 내가 생각했던 유형이 기능 팹 소요 반환 왜 형식이 바뀌는가? :
((a, b) -> c) -> (a -> b -> c)
나는 당신의 혼란의 근원이 구절 믿습니다. a
과 b
은 카레 함수에 전달되는 인수입니다.
(curry f) a b = f (a,b)
... 또는 람다로 우측으로 a
및 b
를 이동시킴으로써 ... 부분 애플리케이션이 더 분명하게하기 위해, 하나 불필요한 괄호 쌍을 부가함으로써 그보고 쉽다 :
curry f = \a b -> f (a,b)
f
은 한 쌍을받는 함수입니다 - 우리는 그것을 한 쌍의 (a,b)
을주고 있습니다. 반면에 curry f
은 두 개의 인수를 따로 따로 사용합니다. 즉, curry
의 유형은 실제로입니다.
curry :: ((a, b) -> c) -> (a -> b -> c)
커리는 함수이고 함수를 반환하는 단 하나의 인수 만 사용합니다. 그 인자는 서명, 즉 하나 개의 인수를 취하는 함수
((a, b) -> c)
와 함수 : 일 (A 및 B)의 쌍과 다른 물건 C를 반환한다. 카레는 그 기능에 뭔가 마법을 수행하고 새로운 기능으로 변합니다 :
즉 두 개의 인수를 취하는 함수(a -> b -> c)
: 일 a와 일의 B 및 일의 C를 반환합니다.
그래서 번호 :
curry f a b
가 같다 :
let newFunction = curry(f)
newFunction a b
기본적 카레 두 인수 대신으로서 그 쌍을 취하는 함수로 쌍을 취하는 함수를 변환한다. curry
함수를 취하고, 그 기능은 f
입니다 :
카레 함수가 나 정말
하지 않는 함수 f를 취합니다