Конструктор типов: различия между версиями
[непроверенная версия] | [непроверенная версия] |
Содержимое удалено Содержимое добавлено
Нет описания правки |
|||
Строка 1:
В [[язык программирования|языках программирования]] и [[теория типов|теории типов]], '''конструктор типа''' представляет собой конструкцию
== Пример ==
Строка 6:
Например, простейшую структуру [[XML]]-документа можно определить следующим образом:
<source lang=ocaml>
datatype simple_xml = Empty
Строка 13 ⟶ 12 :
</source>
Это определение вводит в программу четыре идентификатора: [[алгебраический тип данных]] <code>simple_xml</code> и три конструктора типа: один нулевой арности (<code>Empty</code>) и два унарных (<code>Word</code> и <code>Tagged</code>). Последний конструктор принимает один параметр, являющийся [[Запись (тип данных)|записью]], которую составляют два поля, второе из которых имеет тип <code>simple_xml list</code> (т.е. [[Список (информатика)|список]] объектов типа <code>simple_xml</code>). Таким образом, определяемый тип является {{iw|Рекурсивный тип данных|рекурсивным|en|Recursive data type}}.
Конструкторы типов обладают всеми правами функций (например, конструктор <code>Word</code> имеет тип {{nowrap|<code>string -> simple_xml</code>}}), и в частности, могут использоваться в качестве [[абстракция функций|абстракции функций]]
<source lang=ocaml>
fun listOfWords s =
|