Pensar de una expresión algebraica tipo de datos como un tipo de compuesto más simple de tipos, donde el margen de composiciones operadores Y (escrito $\cdot$, a menudo referido como tipos de producto) y O (escrito $+$, que se conoce como tipos de unión o suma de los tipos).
También tenemos el tipo de unidad de $1$ (lo que representa un null tipo) y el tipo básico $X$ (que representa a un tipo de la celebración de una pieza de datos que puede ser de un tipo primitivo, o de otro tipo algebraico).
También tendemos a utilizar $2X$ a la media de $X+X$ $X^2$ a la media de $X\cdot X$, etc.
Por ejemplo, el tipo de Haskell
data List a = Nil | Cons a (List a)
dice usted que el tipo de datos List a
(una lista de elementos de tipo a
) Nil
o es Cons
de un tipo básico y otro listas. Algebraicamente, podríamos escribir
$$L = 1 + X \cdot L$$
This isn't just pretty notation - it encodes useful information. We can rearrange to get
$$L \cdot (1 - X) = 1$$
and hence
$$L = \frac{1}{1-X} = 1 + X + X^2 + X^3 + \cdot$$
which tells us that a list is either empty ($1$), or it contains 1 element ($X$), or it contains 2 elements ($X^2$), or it contains 3 elements, or...
For a more complicated example, consider the binary tree data type:
data Tree a = Nil | Branch a (Tree a) (Tree a)
Here a tree $T$ is either nil, or it is a Branch
consisting of a piece of data and two other trees. Algebraically
$$T = 1 + X\cdot T^2$$
which we can rearrange to give
$$T = \frac{1}{2X} \left( 1 - \sqrt{1-4X} \right) = 1 + X + 2X^2 + 5X^3 + 14X^4 + 42X^5 + \cdots$$
where I have chosen the negative square root so that the equation makes sense (i.e. so that there are no negative powers of $X$, which are meaningless in this theory).
This tells us that a binary tree can be nil ($1$), que no es un árbol binario con un dato (es decir, el árbol que es una rama que contiene dos vacío árboles), que hay dos árboles binarios con dos datums (el segundo dato es ya sea en la izquierda o a la derecha de la rama), de que hay 5 árboles que contiene tres referencias (usted puede dibujar todos ellos) etc.