[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\)값의…

더 보기

과학에서의 법칙 (Laws in Science)

이 글을 읽는 사람들에게 말하고 싶은 한가지는 과학은 귀납적인 학문이라는 것이다. 과학자들은 자연을 기술하는 법칙을 알고 싶어 한다. 하지만 어디를 찾아보아도 그 법칙들을 서술해 놓은 곳은 없다. 과학자들은 끊임없이 자연을 관찰함으로, 그 법칙들을 찾으려고 노력하는 것이다. 친구들이 보드게임을 하는 것을 본 적이 있는가? 그 게임을 처음 보는 상황이라면, 아무 설명…

더 보기

용어들

양자역학 양자 컴퓨터에 대해 말하면서 양자역학을 그냥 넘어갈 수는 없다. 하지만 양자역학이라는 단어를 평생 한 번도 듣지 못한 사람들이 대부분일 테고, 물리학 또는 화학 전공자가 아닌 이상 심도 있게 배울 기회도 없는 게 사실이다. 그렇다고 여기서 전공자들이 1년 동안 배워도 잘 이해할 수 없는 양자역학을 모두 다루는 것은 본질을 흐린다고…

더 보기

양자 컴퓨터 연재 시작..

우리는 나노기술이 대세인 시대에 살고 있다. 나노기술이 정확히 무엇인지 잘 알지 못해도 많이 들어 익숙한 용어이긴 할 것이다. 많은 사람들이 삼성전자를 떠올릴지도 모른다. 나노(nano)의 원래 의미는 \(10^{-9}\)을 의미하고, 길이에 적용하였을 때 0.000000001m (1nm)를 의미한다. 무게에 적용하면 1ng으로 쓸 수 있고, 0.000000001g을 의미한다. 요즘에는 실제 \(10^{-9}\)의 의미보다 주로 ‘아주 작은 것’을…

더 보기

[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 =…

더 보기