e.g.


1) 일반적으로 함수를 정의하는 방법


let max x y = if x > y then x else y;;


2) anonymous function 을 선언하는 방법


fun x y = if x > y then x else y;;


3) 일반적으로 함수를 정의하는 방법에 anonymous function 선언 방식을 포함한 방법


let max = fun x y -> if x > y then x else y;;



눈치챘는지는 모르겠지만, 

2) 와 같이 anonymous function 을 선언하면 이 함수를 호출할 '이름'이 존재하지 않기 때문에 문제가 생긴다.

그 문제라 함은, 1) 방법과 비교해보면 분명해진다. 

예를 들어, 나중에 이 함수를 쓰고 싶을 때 1) 방법을 통해서 함수를 선언해놨다면 "max 5 6;;"(<-max는 함수의 이름) 

같이 간단하게 명령을 내릴 수 있을 텐데 2) 방법을 이용하면 그렇게 할 수 없다는 것이다.


하지만 Ocaml 을 만든 사람들이 쓸데 없이 중복적으로 사용할 명령어를 만들지 않았겠지 않는가?


anonymous function 은 다른 역할을 하기 때문에 그렇다. 


그렇다면 anonymous function 은 무엇인가?


Anonymous function 은 말 그대로 이름이 없는 함수이다. 

(cf. 일반적으로 함수를 정의할 때는 "let max x y = if x > y then else y;;" 방법을 써서 "x와 y를 받는 함수 max 는..."이다.)

반면, anonymous function 은 함수, function 의 줄임말인 "fun" 을 이용하여 "받아들이는 parameter", "출력하는 결과" 만 나타낸다.


e.g. 

fun x y -> if x > y then x else y ;; 

      "이 함수는 x, y 를 받아서 -> x > y 이면 x 를, 아니면 y 를 반환하는 함수이다" 라고 표현할 수 있다.


근데 그렇다면, anonymous function 은 어떤 상황에서, 무엇을 위해 사용하는지 궁금해질 수 밖에 없다. 


 


WRITTEN BY
서상호

,