Страничка семинара теории типов: различия между версиями

Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Нет описания правки
Строка 30: Строка 30:
</source>
</source>
В этом случае помимо кода с <tt>Object</tt> будут сгенерированы специализации для примитивных типов.
В этом случае помимо кода с <tt>Object</tt> будут сгенерированы специализации для примитивных типов.
==== Generics of a Higher Kind ====
''Juliet:''
16 страниц. Дженерики высшего сорта, чистая правда!

Версия от 20:52, 31 января 2013

По концептам, типам следует читать современные статьи

Можно начинать со школы Одерского:

Статьи по теоретическим основам языка Скала

Выделю тут ряд статей, с которых, по моему мнению, следует начинать:

Краткий отчет о статьях

Compiling Generics Through User-Directed Type Specialization

Juliet:

Небольшая статья, 6 страниц. О технических особенностях генерации кода для шаблонов.

В двух словах речь о том, что использовать код, который генерируется для шаблона после стирания типов (где вместо типа T возникает Object) неэффективно для примитивных типов. Так как их приходится заворачивать в классы-обертки, и, соответственно, в специализированной версии возникают лишние операции boxing/unboxing.

В качестве альтернативы при описании шаблона для типа-параметра шаблона можно указать ключевое слово specialized:

def someFun[@specialized T](...

В этом случае помимо кода с Object будут сгенерированы специализации для примитивных типов.

Generics of a Higher Kind

Juliet:

16 страниц. Дженерики высшего сорта, чистая правда!