\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개인 경우는 어떻게 다루는지 다음 실습에서 알아보자.