Las listas son monoides libres con un generador, los binarios son grupos. Tienes la variante finita o infinita.
puntos de partida:
Es posible que desee aprender la teoría de categorías, y la teoría de las categorías manera se aproxima a las estructuras algebraicas: es exactamente la forma los lenguajes de programación funcionales se aproximan a las estructuras de datos, al menos en forma.
Ejemplo: el tipo de árbol A es
Tree A =() | Tree A | Tree A * Tree A
redactada en la existencia de un isomorfismo (*) (I puse G = Tree A
)
1 + G + G x G -> G
que es la misma que una estructura de grupo
phi : 1 + G + G x G -> G
() € 1 -> e
x € G -> x^(-1)
(x, y) € G x G -> x * y
de hecho, los árboles binarios pueden representar expresiones y formar una estructura algebraica ure. Un elemento de G se lee como la identidad, un inverso de un elemento o el producto de dos elementos. Un árbol binario es una hoja, un árbol o un par de árboles. Tenga en cuenta la similitud en la forma.
(*), así como una propiedad universal, pero son dos de ellos (árboles finitos o árboles perezosos infinitos) así que no voy a profundizar en los detalles.
¿Qué hay de esos isomorfismos solitarios? – Blender
Cualquier otra persona que esté pensando en [mónadas] (http://en.wikipedia.org/wiki/Monad_ (functional_programming)) (y luego "espera, ¿quién soy yo para sugerir eso? Apenas me da el concepto de programación, y mucho menos las matemáticas cosas detrás de eso, ni siquiera sé si se llama con razón 'Monad' "). – delnan