하스켈
[Haskell] 하스켈 기초반 6강 - 패턴 매칭과 if 표현식 및 let 바인딩
이번 시간에는 하스켈에 패턴 매칭이라는 것을 배워보고 if 표현식 및 let 바인딩을 알아보겟습니다. if / then / else 하스켈 문법은 if...then...(else...) 형태의 흔한 조건 표현식을 지원합니다 가령 인자가 a보다 작으면 (-1) 을반환하는 함수를 생각 해보면 인자가 0이면 0을, 인자가 0보다 크면 1을 반환합니다. 그런 일을 하는 signum이라는 함수가 이미 정의되 있지만 설명을 위해서 직접 정의해 봅시다. mySignum x = if x 0 then 1 else 0 이것을 다음과 같이 실행해볼 수 있습니다. *Main> mySignum 5 1 *Main> mySignum 0 0 *Main> mySignum (5-10) -1 ..
[Haskell] 하스켈 기초반 5강 - 타입의 기초2
이번 5강에서는 지난번 배운 타입의 기초에 2번째 시간입니다. 이번 장에서는 숫자 타입들이 하스켈에서 어떻게 처리되는지 보여주고 타입 시스템의 몇 가지 중요한 특성을 소개하는 시간입니다. Num 클래스 수학에는 함께 더할 수 있는 수의 종류에 몇가지 제약이 존재합니다. 예를 들어서 2 + 3(두 자연수) (-7) + 5.12(음의 정수와 실수) 1/7 + π(유리수와 무리수).. 등이 있습니다.이것들은 모두 타당하며 사실 모든 임의의 두 실수는 덧셈이 가능합니다. 그런 일반성을 가장 단순하게 포착하려면 하스켈에서는 일반화된 Number 타입이 필요하고 그런 (+)의 시그니처는 단순히 아래와 같아야 합니다. (+) :: Number -> Number -> Number 하지만 이런 설계는 컴퓨터가 산수를 하..
[Haskell] 하스켈 기초반 4강 - 리스트와 튜플
이번 4강의 시간에는 하스켈의 리스트와 튜플에 대해 배워보도록 하겠습니다. 리스트와 튜플 하스켈에서는 여러 개의 값을 관리하기 위한 근본적인 구조체가 두 가지가 있는데 바로 리스트와 튜플입니다 둘다 여러 값을 하나의 합성값으로 묶음으로써 작동합니다. 리스트 먼저 GHCi 에서 리스트 몇 개를 만들어 봅시다. Prelude> let numbers = [1,2,3,4] Prelude> let truths = [True, False, Flase] Prelude> let strings = ["it's", "perfect", "good", "strings"] 각괄호는 리스트의 범위를 제한하며 개개인의 원소들은 쉼표로 구분합니다. 여기서 중요한 제약으로는 리스트 내의 모든 원소는 타입이 같아야 합니다. 타입이 혼재..
[Haskell] 하스켈 기초반 3강 - 타입의 기초
3강에서는 하스켈의 타입에 대해 알아보겠습니다. 프로그래밍에서 타입은 비슷한 값들을 범주로 묶는 역할을 합니다. 하스켈에서 타입 체계는 코드 상에 실수를 줄여주는 강력한 수단이 됩니다. 프로그래밍은 여러 종류의 개제(entity)를 다루는 일들을 합니다. 두 수를 더하는 경우를 생각해보면 2 + 3 2와 3은 무엇인가?라고 묻는다면 당연하게 숫자입니다. 가운데 더하기 기호는 무엇인가? 분명 숫자는 아닌데 이것을 숫자 두 개를 가지고 할 수 있는 연산 즉, 덧셈을 뜻합니다. 만약 본인의 이름을 물어보고 "Hello"라고 답하는 프로그램을 생각해 봅시다. 여러분의 이름도, Hello라는 단어도 숫자도 아닌데 그럼 이것들은 어떻게 설명할 수 있을까요? 우리는 모든 단어와 문자을 통들어 텍스트라고 부를 수도 있..