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

[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
→‎Standard ML: на пересмотр
м переименование нестабошаблона
Строка 6:
По сути, конструктор типов представляет собой [[арность|''<code>n</code>''-арный]] '''ти́повый оператор''' ({{lang-en|type operator}}, оператор над типами), принимающий на входе ноль или более типов, и возвращающий другой тип. При использовании [[каррирование|каррирования]] ''<code>n</code>''-арный ти́повый оператор может быть представлен последовательным применением унарных ти́повых операторов. Следовательно, ти́повые операторы можно рассматривать как [[просто типизированное лямбда-исчисление]], имеющее единственный тип, обычно обозначаемый «<code>*</code>» (читается «''тип''»), являющийся типом всех типов в нижележащем языке, которые в этом случае можно называть ''характерными типами'', чтобы отличать их от типов ти́повых операторов в их собственном исчислении — [[Род (теория типов)|родов типов]].
 
Однако, использование ти́повых операторов в качестве обоснования просто типизированного лямбда-исчисления — это больше, чем просто формализация — это делает возможными ти́повые операторы высших порядков (см. [[Род (теория типов)#Примеры|примеры родов типов]]). Ти́повые операторы соотносятся со второй осью в [[Лямбдалямбда-куб|лямбда-кубе]]е, приводя к просто типизированному лямбда-исчислению с ти́повыми операторами — λ<sub>ω</sub>. Комбинация ти́повых операторов с полиморфным лябда-исчислением ({{nowrap|[[Система F|системой F]]}}) порождает {{iw|Система F-омега|{{nowrap|систему Fω}}|en|System F-omega}}.
 
Конструкторы типов интенсивно используются в [[полнотиповое программирование|полнотиповом программировании]].
Строка 32:
 
<!-- Здесь лучше всего сосредоточиться на каррированных - кортежи рассмотрены в SML. Неплохо раскрыть прелести карринга на примере сложной иерархии типов. -->
{{заготовка раздела}}
{{sect-stub}}
 
== См.также ==
Строка 78:
 
{{Типы данных}}
 
{{sectcompu-prog-stub}}
 
[[Категория:Информатика]]
Строка 84 ⟶ 86 :
[[Категория:Типы данных]]
[[Категория:Определение соответствия]]
 
{{compu-prog-stub}}