Haskell (FP101.x) – Poor Man’s Concurrency Monad

edx 의 FP101.x (Introduction to Functional Programming) 수업 중 10 번째 챕터입니다. FP 101x 의 최종 보스입니다. Rose Tree 는 거들뿐 Koen Claessen 가 1999년에 발표한 Poor Man’s Concurrenc Monad 를 배경으로 하는 과제인데, 언어에 primitive 추가 없이 concurrency 를 모델링 하는 방법을 보여줍니다. Continuation 먼저 용어부터 정의하고 가면, continuation 은 실행 가능한 computation 입니다. 필요할 … Continue reading Haskell (FP101.x) – Poor Man’s Concurrency Monad

Haskell (FP101.x) – Chapter 9

edx 의 FP101.x (Introduction to Functional Programming) 수업 중 9 번째 챕터입니다. 이번시간엔 함수형 프로그래밍에서 property 를 증명하는 방법인 induction 에 대해 배워보고, 하스켈에서 알고리즘의 성능이 어떨까에 대해 좀 논의해 보겠습니다. 마지막엔 Rose Tree 를 구현하면서 Functor, Monoid, Foldable 등에 대해 좀 알아봅시다. 수학에서 다음 두 식은 똑같습니다. xz + yz = (x + y)z 근데, … Continue reading Haskell (FP101.x) – Chapter 9

Haskell (FP101.x) – Chapter 8

edx 의 FP101.x (Introduction to Functional Programming) 수업 중 8 번째 챕터입니다. 고차함수가 있는 다른언어와 비교했을 때 하스켈은 무슨 특징이 있을까요? 하스켈은 expression 을 평가하기 위해 디폴트로 lazy evaluation 을 사용한다는 점에서 다른 언어들과 다릅니다. 이번시간엔 evaluation 의 개념부터 시작해서, 다양한 종류의 evaluation 전략들을 살펴보겠습니다. Evaluation Avoid doing unnecessay evaluation Allows programs to be more modular … Continue reading Haskell (FP101.x) – Chapter 8

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