Только язык Scala с перегруженными экстракторами?

По крайней мере, в некоторых языках семейства ML вы можете определять записи, на которых вы можете выполнять шаблоны. соответствие, например http://learnyouahaskell.com/making-our-own-types-and-typeclasses— основная идея заключается в том, что вы определяете тип записи с именованными полями, автоматически создается конструктор с этими полями в качестве параметров поэтому вы можете создавать записи этого типа, и автоматически создается экстрактор с этими полями в качестве параметров, чтобы вы могли сопоставлять шаблоны для записей этого типа.

Scala идет еще дальше и позволяет отделить друг от друга поля, хранящиеся в записи, параметры конструктора и параметры экстрактора, например. http://daily-scala.blogspot.com/2009/11/overloaded-unapply.html— в этом он соответствует своей цели поддержки как объектно-ориентированного, так и функционального программирования. (Объектно-ориентированные языки, конечно, обычно позволяют разделять хранимые поля и параметры конструктора, хотя обычно они не имеют экстракторов.)

Существуют ли какие-либо другие языки, которые поддерживают сопоставление с образцом и допускают такое разделение?

Было ли что-нибудь написано о плюсах и минусах такой развязки?

5
задан sblom 12 May 2012 в 07:16
поделиться