Для чего нужны типовые проекции? - PullRequest
17 голосов
/ 13 августа 2011

Для чего нужны типовые проекции в Scala?Почему система типов Scala поддерживает как проекции типов, так и типы, зависящие от пути?Каково было обоснование этого дизайнерского решения?

Ответы [ 2 ]

13 голосов
/ 13 августа 2011

Не полный ответ, но вот некоторые примеры использования проекций типов, с которыми я столкнулся:

  • Метапрограммирование на уровне типа . Примеры см. В сериях Михида (части I , II , III ), реализации Джеспера в HList и серии на Apocalisp .

  • Обходной путь для включения вывода типа (например, вот некоторые предыдущие вопросы SO 1 , 2 , 3 ).

  • Способ объединения группы типов в один параметр типа. Например, в матричной библиотеке, которую я разрабатываю, я определяю trait Scalar { type A; type B; type C; ... }, а затем передаю ее в качестве отдельного параметра для моей характеристики матрицы, trait Matrix[S <: Scalar] .... Отдельные типы могут упоминаться как S#A, S#B и скоро. Между двумя матрицами типа Matrix[S] для одного и того же S эти типы будут совместимы (в отличие от случая с типами, зависящими от пути).

9 голосов
/ 13 августа 2011

Для проекций частичного типа можно использовать одну проекцию типа:

({type λ[x]=Tuple2[Int,x]})#λ
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...