이제 구현할 차례다. 인자가 두 개인 커리한 함수를 반환하므로 람다 식을 이중으로 정의하는 것부터 시작하면 된다.
fun <A, B, C> curry(f: (A, B) -> C): (A) -> (B) -> C = { a -> { b -> } }
이제 결과 타입으로 평가될 수 있는 식을 넣으면 된다. 여기서는 f 함수에 두 인자 a와 b를 적용하면 된다.
fun <A, B, C> curry(f: (A, B) -> C): (A) -> (B) -> C = { a -> { b -> f(a, b) } }
이 경우에도 코드가 컴파일되기만 하면 잘못된 코드일 수가 없다. 이는 강력한 타입 시스템의 여러 장점 중 하나다. (항상 강타입(strongly typed) 시스템에서 컴파일이 된다고 올바른 코드인 것은 아니다. 다음 장에서 타입을 사용해 올바른 프로그램이 될 가능성을 높이는 방법을 배운다.)