LINUX.ORG.RU

История изменений

Исправление quasimoto, (текущая версия) :

ООП интерфейсы и алгебраические типы это две стороны одной медали (expression problem) — в Scala у нас может быть abstract class / trait IFace и куча case class-ов которые делают ему extends — хотим, можем поднять в IFace и работать ООП-шным полиморфизмом, или можем разобрать объект IFace в паттерн-матчинге по конкретным case class-ам и работать уже имея информацию о конкретном типе объекта. Как-то там с этим нет проблем (плюс там есть sealed иерархии, так что компилятор может проверять «герметичность» паттерн-матчинга, типа как со switch по enum в C++).

http://www.artima.com/pins1ed/case-classes-and-pattern-matching.html

http://en.wikipedia.org/wiki/Expression_problem

Исходная версия quasimoto, :

ООП интерфейсы и алгебраические типы это две стороны одной медали (expression problem) — в Scala у нас может быть abstract class / trait IFace и куча case class-ов которые делают ему extends — хотим, можем поднять в IFace и работать ООП-шным полиморфизмом, или можем разобрать объект IFace в паттерн-матчинге по конкретным case class-ам и работать уже имея информацию о конкретном типе объекта. Как-то там с этим нет проблем (плюс там есть sealed иерархии, так что компилятор может проверять «герметичность» паттерн-матчинга, типа как со swith по enum в C++).

http://www.artima.com/pins1ed/case-classes-and-pattern-matching.html

http://en.wikipedia.org/wiki/Expression_problem