※ 2023년 9월 현재 바쁜일이 많아 설명만 일단 쓰고 추후에 소스코드를 보완합니다.
함수는 모든 매개변수가 만족되어야 정상입력되어 작동한다. 그러나 값의 일부만 입력하고도 오류가 되지 않는 방법이 있다.
curring은 값의 일부만 전달하고 나머지는 함수로 전달하여 나중에 계산하는 방식이고 haskell에서는 이런식으로 된다. haskell에서 흔히 제시되는 더하기 함수 코드인데 타입 선언 후에 함수를 정의했다.
커링은 파라미터를 다 입력하는 것과 일부의 파라미터를 입력해주고 나머지를 함수로 넘기는 것은 같다고 보는 개념으로 lazy evaluation과도 개념적으로 연관이 있다.
add :: Int -> ( Int -> Int ) -- ( Int , Int ) -> Int
add x y = ( x + y )
add3 = add 3
add3
haskell에서는 -> 연산자를 타입을 연결할때 사용하지만 함수의 연쇄를 흔히 일으키므로 화살표 함수같은 기능도 한다. 자바스크립트에서는 화살표 함수를 무명함수를 선언할때만 사용한다. 매개변수로 함수를 넘겨주는 방식을 계속 연쇄적으로 수행하여 최종적으로는 값을 전달하여 결과를 내놓는다.
bind와 콜백을 이용하여 일부의 값과 함수를 함께 넘겨 알고있는 값만 전달할 수 있다.