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

[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
Строка 8:
datatype 'a list = nil | :: of 'a * 'a list
</source>
При использовании этого [[полиморфизм типов|полиморфного типа]], в ти́повую переменную подставляется конкретный тип, так что в программе формируетсяможет быть сформировано множество мономорфных типов: <code>string list</code>, <code>int list</code>, <code>int list list</code> и так далее. При такой подстановке, вместо каждого упоминания переменной типа подставляется один и тот же тип. Полученная информация о типах используется для [[типобезопасность|верификации]] и [[оптимизирующий компилятор|оптимизации]] программы, после чего обычно стирается, так что один и тот же целевой код обрабатывает объекты изначально разных типов (но существуют и исключения из этого правила, в частности, в [[MLton]]).
 
Если полиморфный тип параметризован несколькими переменными типа, то подставляемые в них типы могут быть как разными, так и идентичными, но правило подстановки соблюдается. Например, если такой тип: