Functional Programming in Scala – 6

Coursera 의 Functional Programming In Scala 수업 중 1 번째 챕터입니다. 지난 시간에는 referential transparency (참조투명성) 과 함수형 언어에서의 귀납법인 structural induction 에 대해서 배우고, 몇 개의 예제를 증명했었다. 이번 시간에는 스칼라의 컬렉션인 Seq, Set, Map 을 알아보고 마지막 챕터에서는 여기에 higher-order function 을 더해 미친듯한 표현력을 가진 코드를 작성해 본다. one-liner 의 절정을 보여주시는 교수님 … Continue reading Functional Programming in Scala – 6

Functional Programming in Scala – 5

Coursera 의 Functional Programming In Scala 수업 중 5 번째 챕터입니다. 지난주엔 Scala 가 리스코프 치환 원칙 을 지키기 위해 어떻게 Variance(공변성) 을 문법적으로 지원하는지 알아보았다. 직접 List 컨테이너를 구현해 보면서 함수의 인자는 Covariant, 리턴타입은 Contravariant 란 것도 알게 되었고, Nil 을 만들기 위해 Nothing 을 어떻게 엮을 수 있는지도 직접 확인해 보았다. 마지막으로, 프로그래머가 가장 … Continue reading Functional Programming in Scala – 5

Functional Programming in Scala – 4

Coursera 의 Functional Programming In Scala 수업 중 4 번째 챕터입니다. Types and Pattern Matching Functions as Objects In fact function values are treated as objects in Scala trait Function1[A, B] { def apply(x: A): B } 결국, function 은 apply 메소드를 가진 오브젝트다. 예를 들어서 (x: Int) => x * x 는 다음과 같이 Function1 … Continue reading Functional Programming in Scala – 4

Functional Programming in Scala – 3

Coursera 의 Functional Programming In Scala 수업 중 3 번째 챕터입니다. 3.1 Class Hierarchies Abstract Classes abstract class 는 다른 언어의 그것과 같다. abstract class IntSet { def contains(x: Int): Boolean def incl(x: Int): IntSet } object EmptySet extends IntSet { def contains(x: Int) = false def incl(x: Int) = new NonEmptySet(x, EmptySet, EmptySet) } class … Continue reading Functional Programming in Scala – 3

Functional Programming in Scala – 2

Coursera 의 Functional Programming In Scala 수업 중 2 번째 챕터입니다. 2.1 Higher-Order Functions Higher-Order Functions Functional PL 에서는 함수를 first-class 로 다루는데, 이는 함수를 파라미터로 넘기거나 결과로 리턴할 수 있다는 소리다. 이렇게 함수를 파라미터로 받거나, 혹은 함수를 리턴하는 함수를 Higher order functions 라 부른다. Function Types type A => B is the type of a … Continue reading Functional Programming in Scala – 2