Capítulo 3 define el siguiente tipo recursivo para representar un árbol binario:Real World Haskell Capítulo 3 ejercicio: Árbol Binario con 1 constructor de datos
data Tree a = Node a (Tree a) (Tree a)
| Empty
deriving (Show)
El ejercicio requiere implemento del mismo tipo utilizando un constructor único valor, utilizando el tipo "Tal vez" para referirse a los nodos secundarios:
(del Capítulo 3 Ejercicio 2 en la página 60)
"definir un tipo de árbol que tiene un solo constructor, como nuestro ejemplo de Java en lugar del vacío. constructor, use el tipo Maybe para referirse r a los hijos de un nodo ".
La solución que se me ocurrió es la siguiente:
data AltTree a = AltNode a (Maybe (AltTree a)) (Maybe (AltTree a))
deriving (Show)
Sin embargo, esto no permite un árbol que contiene otros árboles vacíos, tales como:
AltNode 1 (AltNode 2 Nothing Nothing) (AltNode 3 Nothing Nothing)
y no estoy ¿Por qué, "Nothing" no es un constructor de valor para el tipo "Maybe"?
línea: [RWH> Capítulo 3 Ejercicios>] (http://book.realworldhaskell.org/read/defining-types-streamlining-functions.html#id585938) –