[Haskell] 02. 첫번째 Haskell 실습

다음과 같은 함수 \(f\)를 생각해 보자.

\begin{equation}
f:x \mapsto |x| \\
\end{equation}\[ f:x \mapsto
\begin{cases}
x, & \text{if } x \ge 0 \\
-x, & \text{if } x <0\\
\end{cases}
\]\begin{equation}
g:x \mapsto -x \\
\end{equation}

함수 \(f\)의 두 번째 표현은 첫 번째 함수를 다른 방법으로 표기한 것이다. 이런 함수 \(f\)를 일반적으로 abs함수라고 부른다. 주어진 입력값의 절대값을 반환하는 함수이다. 함수 \(g\)는 주어진 입력값의 반대 부호를 갖는 값을 반환하는 함수이다. Haskell에는 negate 함수가 이 역할을 한다.

Prelude> abs (-3)
3
Prelude> abs 7
7
Prelude> abs 0
0
Prelude> negate 5
-5
Prelude> negate (-8)
8

성공! 여기서 주의할 점이 있다. 음수를 입력할 때는 항상 괄호를 해주어야 한다. abs -3이라고 하면 error 메세지를 출력할 것이다. 이는 Haskell의 연산 우선순위가 항상 함수에 있기 때문이다. abs -3(abs -)3을 의미하므로 올바른 결과를 얻을 수 없다.

이제 막 Haskell의 첫 번째 예제를 실행했다. 이번에는 직접 함수를 만들어 보자. 지금까지 예제로 많이 사용했던 함수인 \(\mathrm{square}: x \mapsto x^2\)를 만들자.

Prelude> let square x = x^2

이것이 전부이다. 매우 간단하지 않은가? 실행을 시켜보면,

Prelude> square 3
9
Prelude> square 6
36

잘 동작하는 것을 확인할 수 있다.

그런데 지금까지 입력이 1개인 경우만 다루었다. add 같이 2개의 입력값을 더하는 함수를 작성하려면 어떻게 해야 할까? 입력이 2개인 경우는 어떻게 다루는지 다음 실습에서 알아보자.

Reply