Страничка семинара теории типов: различия между версиями
Mikst (обсуждение | вклад) Нет описания правки |
Juliet (обсуждение | вклад) Нет описания правки |
||
Строка 16: | Строка 16: | ||
* [http://www.scala-lang.org/sites/default/files/odersky/mfcs06.pdf A Core Calculus for Scala Type Checking] | * [http://www.scala-lang.org/sites/default/files/odersky/mfcs06.pdf A Core Calculus for Scala Type Checking] | ||
* [http://www.scala-lang.org/sites/default/files/odersky/ecoop03.pdf A Nominal Theory of Objects with Dependent Types] | * [http://www.scala-lang.org/sites/default/files/odersky/ecoop03.pdf A Nominal Theory of Objects with Dependent Types] | ||
== Краткий отчет о статьях == | |||
==== Compiling Generics Through User-Directed Type Specialization ==== | |||
''Juliet:'' | |||
Небольшая статья, 6 страниц. О технических особенностях генерации кода для шаблонов. | |||
В двух словах речь о том, что использовать код, который генерируется для шаблона после стирания типов (где вместо типа <tt>T</tt> возникает <tt>Object</tt>) неэффективно для примитивных типов. Так как их приходится заворачивать в классы-обертки, и, соответственно, в специализированной версии возникают лишние операции boxing/unboxing. | |||
В качестве альтернативы при описании шаблона для типа-параметра шаблона можно указать ключевое слово '''specialized''': | |||
<source lang="scala"> | |||
def someFun[@specialized T](... | |||
</source> | |||
В этом случае помимо кода с <tt>Object</tt> будут сгенерированы специализации для примитивных типов. |
Версия от 20:50, 31 января 2013
По концептам, типам следует читать современные статьи
Можно начинать со школы Одерского:
Статьи по теоретическим основам языка Скала
Выделю тут ряд статей, с которых, по моему мнению, следует начинать:
- Fighting Bit Rot with Types (Experience Report: Scala Collections)
- Compiling Generics Through User-Directed Type Specialization
- Implementing First-Class Polymorphic Delimited Continuations by a Type-Directed Selective CPS-Transform
- Modular Visitor Components: A Practical Solution to the Expression Families Problem
- Generics of a Higher Kind
- Safe Type-level Abstraction in Scala
- Translation Correctness for First-Order Object-Oriented Pattern Matching
- A Core Calculus for Scala Type Checking
- A Nominal Theory of Objects with Dependent Types
Краткий отчет о статьях
Compiling Generics Through User-Directed Type Specialization
Juliet:
Небольшая статья, 6 страниц. О технических особенностях генерации кода для шаблонов.
В двух словах речь о том, что использовать код, который генерируется для шаблона после стирания типов (где вместо типа T возникает Object) неэффективно для примитивных типов. Так как их приходится заворачивать в классы-обертки, и, соответственно, в специализированной версии возникают лишние операции boxing/unboxing.
В качестве альтернативы при описании шаблона для типа-параметра шаблона можно указать ключевое слово specialized:
def someFun[@specialized T](...
В этом случае помимо кода с Object будут сгенерированы специализации для примитивных типов.