Конструктор (функциональное программирование): различия между версиями
Материал из Поле цифровой дидактики
Patarakin (обсуждение | вклад) |
Patarakin (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
В [[теория типов|теории типов]] и [[функциональное программирование|функциональных языках программирования]] '''конструктор алгебраического типа данных''' или просто '''конструктор''' представляет собой функцию с пустым телом, конструирующую объект '''[[Алгебраический тип данных|алгебраического типа данных]]'''. | В [[теория типов|теории типов]] и [[функциональное программирование|функциональных языках программирования]] '''конструктор алгебраического типа данных''' или просто '''конструктор''' представляет собой функцию с пустым телом, конструирующую объект '''[[Алгебраический тип данных|алгебраического типа данных]]'''. | ||
Алгебраические типы данных являются важным элементом языков | Алгебраические типы данных являются важным элементом языков. | ||
== Пример == | == Пример == |
Текущая версия на 12:17, 19 октября 2022
В теории типов и функциональных языках программирования конструктор алгебраического типа данных или просто конструктор представляет собой функцию с пустым телом, конструирующую объект алгебраического типа данных.
Алгебраические типы данных являются важным элементом языков.
Пример
Простейшую структуру XML-документа в Standard ML можно определить следующим образом<
datatype simple_xml = Empty
| Word of string
| Tagged of string * simple_xml list
Конструкторы обладают всеми правами функций.
fun listOfWords s =
map Word (String.tokens Char.isSpace s)
fun toString e =
let val scat = String.concat in
case e of
Empty => ""
| Word s => s ^ " "
| Tagged (tag, contents) => scat [ "<",tag,">", scat (map toString contents), "</",tag,">" ]
end