Haskell (FP101.x) – Chapter 7

edx 의 FP101.x (Introduction to Functional Programming) 수업 중 7 번째 챕터입니다. the countdown problem 은 프랑스 퀴즈 프로그램에서 유래한 문제입니다. 주어진 양수를 단 한번씩만 이용하여 특정 숫자를 만드는 문제입니다. 사용가능한 연산자는 +, *, -, / 입니다. 예를 들어 (25 - 10) * (50 + 1) = 765 입니다. 사람이 풀기엔 search space 가 좀 넓어서 … Continue reading Haskell (FP101.x) – Chapter 7

Haskell (FP101.x) – Chapter 6

edx 의 FP101.x (Introduction to Functional Programming) 수업 중 6 번째 챕터입니다. 이번시간엔 어떻게 type 과 class 를 정의하는지 배울겁니다. 이렇게 commonality 를 추출해서 type 과 class 로 만듦으로써 작업의 양을 줄일 수 있습니다. 이 과정을 추상화라 부르기도 합니다. 마지막엔 이제까지 배운바를 적용해 봅시다. 항상 참인 명제를 검사하는 tautology checker 와 평가 시점을 조절하는 abstract machine … Continue reading Haskell (FP101.x) – Chapter 6

Haskell (FP101.x) – Chapter 5

edx 의 FP101.x (Introduction to Functional Programming) 수업 중 5 번째 챕터입니다. 키보드를 읽거나 화면에 무엇인가 쓰는 intertactive program 은 side-effect 를 만듭니다. 그런데, 하스켈은 side-effect 가 없지요. 그럼 입출력이 불가능한 것일까요? 당연히 그렇지 않습니다. IO 모나드 를 사용할겁니다. pure expression 부분과 side-effect 를 만들어내는 impure action 을 구분하여 하스켈에서 입출력을 할 수 있습니다. Interactive program … Continue reading Haskell (FP101.x) – Chapter 5

Haskell (FP101.x) – Chapter 4

edx 의 FP101.x (Introduction to Functional Programming) 수업 중 4 번째 챕터입니다.   이번시간엔 모나드를 배웁니다. 네. 올것이 왔습니다. 간단한 파서를 구현하는 것 부터 시작해 보겠습니다. What is a Parser Parser (파서) 란 텍스트 조각을 분석하여 syntaxtic structure 를 만들어 내는 프로그램(코드)를 말합니다. 많은 프로그램들이 자신만의 파서를 가지고 있습니다. GHC 는 haskell , UNIX 는 shell … Continue reading Haskell (FP101.x) – Chapter 4

Haskell (FP101.x) – Chapter 3

edx 의 FP101.x (Introduction to Functional Programming) 수업 중 3 번째 챕터입니다.   하스켈에서 repetition (반복) 은 recursion 을 통해 표현됩니다. 간단한 재귀부터 시작해서 mutual recursion 까지 알아보고, Higher order function (특히 fold) 에 대해 배운 뒤 적용을 위해 church numerals 를 구현해보고, 마지막으로 간단한 문자열 전송기를 모델링 해 보겠습니다. Tail call? recursion 을 주로 사용한다면 … Continue reading Haskell (FP101.x) – Chapter 3