<aside> 💡 Алгебраические типы данных – это скрещивание enum’ов и структур из Си. (Из презы)

</aside>

<aside> 💡 Алгебраический тип данных — в информатике наиболее общий составной тип, представляющий собой тип-сумму из типов-произведений. Алгебраический тип имеет набор конструкторов, каждый из которых принимает на вход значения определённых типов и возвращает значение конструируемого типа. Конструктор представляет собой функцию, которая строит значение своего типа на основе входных значений. Для последующего извлечения этих значений из алгебраического типа используется сопоставление с образцом. (Из википедии)

</aside>

Пример:

Связный список — структура данных, представляет:

type 'a list = 
| Nil
| Cons of 'a * 'a list

Nil и Cons — конструкторы типа ‘a list.

Аксиомы алгебраических типов:

Tree zippersss @darknesssupremacy [WIP]

type 'a tree =
  | Leaf
  | Node of 'a tree * 'a * 'a tree

Производная типа для бинарного дерева вычисляется следующим образом:

Исходное уравнение типа: $T = 1 + \alpha \cdot T^2$

1 - это Leaf

a * T^2 - это ‘a * ‘a tree * ‘a tree