Según el título.Si no puede cambiar el valor de una variable en Haskell, ¿cómo crea estructuras de datos?
Tengo el siguiente código que crea un árbol de búsqueda binaria, pero si quiero crearlo y cambiarlo dinámicamente con la entrada del usuario, ¿cómo lo haré si no puedo cambiar el valor de una variable en haskell?!?
find :: (Ord a) => Node a -> a -> Bool
find (Node val left right) s
| s == val = True
| s < val = find left s
| s > val = find right s
find Empty s = False
data Node a = Node a (Node a) (Node a)
| Empty
myTree = Node "m" (Node "a" Empty Empty)
(Node "z" Empty Empty)
¡Gracias de antemano!
Gracias por la respuesta. No me refiero a ser denso pero con el ejemplo dado todavía parezco tener el mismo problema. Llegas a 'insertar elemento de árbol', árbol es un nodo con nodos izquierdo y derecho adjuntos que pueden ser 'Vacío' o no. La primera vez que se llama a addTreeItems se vuelve a llamar con un árbol devuelto por 'insertar elemento de árbol' que simplemente tendría un único nodo con presumiblemente dos ramas vacías. La segunda recursión tiene este nodo raíz pasado a insertar junto con un nuevo elemento, pero ¿cómo se agrega ese elemento al nodo si las ramas del nodo no se pueden cambiar (desde el vacío en este caso)? Gracias! –
No importaba Estaba siendo denso, olvidé que necesito crear un árbol completamente nuevo, estoy cerca de mi propia solución, creo ahora. –