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
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
