Подтвердить что ты не робот

Для чего нужны типы прогнозов?

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

4b9b3361

Ответ 1

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

  • Метапрограммирование уровня уровня. Например, см. Серию Michid (части I, II, III), Jesper реализация 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, эти типы будут совместимы (в отличие от того, что было бы с типами, зависящими от пути).

Ответ 2

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

({type λ[x]=Tuple2[Int,x]})#λ