[Haskell] 06. 리스트 타입 가지고 놀기 (2) – 리스트 만들기

리스트를 만드는 방법에는 여러가지가 있다. 지금까지 우리가 했던 일반적인 방법은 [1,2,3,4,5]와 같이 직접 입력하는 것이다. 하지만 1~100까지 혹은 1~10000까지의 리스트를 만든다면 직접 손으로 입력하기는 어렵다. Haskell은 생각보다 똑똑하다. 다음 예제를 보자. Prelude> [1,2,3,4,5] [1,2,3,4,5] Prelude> [1..5] [1,2,3,4,5] Prelude> [1..14] [1,2,3,4,5,6,7,8,9,10,11,12,13,14] Prelude> [1,3..15] [1,3,5,7,9,11,13,15] Prelude> [1,4..15] [1,4,7,10,13] Prelude> [‘a’,’b’..’f’] “abcdef” Prelude>…

더 보기

[Haskell] 05. 리스트 타입 가지고 놀기 (1) – 리스트 연산

리스트 타입은 Haskel에서 가장 많이 쓰이는 타입이다. 여러가지 Type들을 담을 수 있는 일종의 Container이다. Prelude> [1,2,3,4,5] [1,2,3,4,5] Prelude> :type [1,2,3,4,5] [1,2,3,4,5] :: Num t => [t] [1,2,3,4,5]의 타입을 확인해 보면, [Num]임을 알 수 있다. 즉 Num의 리스트 타입이다. 리스트를 입력으로 받는 몇 가지 함수들을 실행해 보자. Prelude> head [1,2,3,4,5] 1…

더 보기

[Haskell] 04. 기본 입출력 타입(Type)

지금까지는 함수를 주로 다루었다. 에서 보았던 함수 표현식을 다시 보자. \begin{align} x \mapsto x^2, \quad x \in \mathbb{Z} \quad \text{(1)}\\ x \mapsto 2x+3,\quad x \in \mathbb{N} \quad \text{(2)} \\ x \mapsto x^3+3x+5,\quad x \in \mathbb{R} \quad \text{(3)} \end{align} 이제 입출력 값의 형태(Type)에 대해 살펴 보려고 한다. 위의 함수들을 보면 \(x\)값의…

더 보기

[Haskell] 03. 커링 (Currying)

이제 함수를 표현하는 방법에 익숙해졌을 것으로 생각한다. 입력이 2개인 함수를 생각해보자. \begin{equation} f:(x,y) \mapsto z \end{equation} 2개의 입력값 \(x, y\)를 받아서 \(z\)값을 출력하는 함수이다. 좀 더 간단하게 필요 없는 내용은 없애고 다음과 같은 예를 생각하자. \begin{equation} \text{add}: (x,y) \mapsto x+y \end{equation} 이를 Haskell에서 구현하면, Prelude> let add x y =…

더 보기

[Haskell] 01. 함수(Function)란?

먼저 시작하기 전에 함수(Function)에 대해 생각해보자. 사실 우리는 모두 중학교 수학에서 함수의 정의를 배웠다. 너무 오래돼서 기억이 안 날 수도 있고, 프로그래밍을 너무 오래 하다 보니 수학에서의 함수보다는 프로그래밍 언어에서의 함수에 익숙해진 지도 모른다. 프로그래밍에서의 함수와 수학에서의 함수가 개념적으로 같은 거 아니냐고 반문할 수도 있다. 둘은 비슷하지만 약간의 차이점이 있다….

더 보기

[Haskell] 00. Haskell 설치 및 실행

여기서 설치는 Mac OS X과 Linux에 대한 것만 다룬다. Window에 설치하는 방법은 Haskell Homepage 을 참고하면 된다. Mac OS X 에서의 Haskell 설치 brew install Caskroom/cask/haskell-platform brew를 이용하여 위와 같은 명령으로 설치하면 된다. Homebrew는 OS X을 위한 package 관리 및 설치 프로그램으로 Mac으로 프로그래밍을 한다면, 반드시 사용하는 게 여러모로 편하다….

더 보기