clojure의 더하기는 (+ 1 2 3) 이다
Table of Contents
clojure 함수의 특이한 생김새를 알아보자.
일반적인 언어에서 더하기 함수는 아래와 같다.
1 + 2 + 3 + 4 + ...
이 경우 + 는 연산자이다. 함수와는 다른 존재인 것이다. 일반적인 언어에서 함수는 아래와 같이 사용한다. (javascript에서 1 더하기 2 더하기 3을 반환하는 함수를 예시로 만듦)
function sum(a, b, c) {
return a + b + c;
}
sum(1, 2, 3);
clojure 더하기 함수의 설명
clojure의 경우, 더하기가 일반적인 언어와 다르다.
(+ 1 2 3)
위 함수의 생김새를 하나씩 뜯어보자.
1. clojure 에서는 함수 구현부와 실행부를 () 로 감싼다.
clojure는 lisp 이라는 언어의 방언이고, 이 특성은 lisp 에서 유래한다.
clojure 에서는 함수를 아래와 같이 선언한다. 아래 함수는 특정 값에 2를 더하는 함수이다.
(defn add2
[val]
(+ 2 val))
이 함수는 아래와 같이 사용한다.
(add2 3)
그러면 이 함수는 5를 반환한다.
이처럼 clojure에서는 함수를 구현하고 실행할 때, 모두 () 로 감싼다.
2. clojure 에서는 실행할 함수가 괄호의 처음에 들어간다.
() 안에서 함수를 실행하려면, () 안에 두 개 이상의 무언가를 입력해야 한다.
첫번째 자리에는 무조건, 실행할 함수를 입력해야 한다.
두번째 이후의 자리에는, 함수에 입력할 인자를 입력한다.
3. clojure 에서 + 는 함수이다.
clojure의 더하기 예시 코드를 다시 보자.
(+ 1 2 3)
- 가 일반적인 언어처럼 1과 2 사이, 2와 3 사이에 위치하지 않고, 함수가 위치하는 자리에 + 가 자리하고 있다.
실제로 특정한 무언가가 함수인지 검사하는 fn? 를 이용해 + 를 검사해보면,
(fn? +)
true가 반환된다.
처음보면 기존 언어들과는 함수를 구현하고 실행하는 방법이나 사고방식이 달라서 헷갈릴 수 있다. 하지만 적응되고 나면 몇 가지 장점을 느낄 수 있다.