En matemáticas discretas es usual introducir definiciones de estructuras recursivas dando los casos de definición y un axioma de clausura indicando que ninguna otra cosa forma parte de lo definido.
Por ejemplo, los árboles con información en los nodos pueden definirse como sigue:
Sea T un conjunto. Los árboles con información en los nodos son todos los valores que se pueden construir con las reglas siguientes.
La construcción correspondiente en los lenguajes de programación se llama Tipo de dato abstracto Sus reglas de tipo polimórficas fueron introducidas por Robin Milner junto con la definición del lenguaje Standard ML y han sido adoptadas desde entonces en diversos lenguajes de programación, sobre todo en los lenguajes de programación funcionales. Por ejemplo, la definición del tipo árbol binario con información en los nodos de tipo T se escribe en Ocaml como sigue:
y en sintaxis de Haskell (con información en los nodos de tipo t):
Los constructores del tipo Árbol son AVacio y Nodo los cuales, al recibir los argumentos necesarios producen un valor del tipo árbol. Por ejemplo, en Ocaml, AVacio es un árbol al igual que Nodo (AVacio,5,AVacio).
Las operaciones sobre los tipos recursivos generalmente se escriben utilizando la construcción de llamada por patrones. Por ejemplo, en Haskell, el número de niveles de un árbol se define como:
en Standard ML la misma función se escribe
A cada tipo de datos del lenguaje algebraico corresponde el orden bien fundamentado de subtérminos y un esquema de inducción estructural sobre la base de la definición del tipo. En el caso de los árboles éstos son los siguientes:
Escribe un comentario o lo que quieras sobre Tipo de dato algebraico (directo, no tienes que registrarte)
Comentarios
(de más nuevos a más antiguos)