Obtener la raíz de un rosal en Haskell
Recientemente comencé a aprender sobre Haskell, y estoy luchando con el siguiente ejercicio:
Write functions root :: Rose a -> a and children :: Rose a -> [Rose a] that return the value stored at the root of a rose tree, respectively the children of the root of a rose tree.
Me dieron el siguiente código básico para comenzar:
data Rose a = a :> [Rose a] deriving (Eq, Show)
No sé qué significa (:>). Traté de entenderlo escribiendo el ghci
Input: :t (:>)
Output: a -> [Rose a] -> Rose a
Así que creo que significa que tienes una
valor, que se utilizará para buscarRose a
fuera de una lista y vuelveRose a
, pero todavía estoy confundido sobre qué hacer a continuación.
Si miro la firma deroot :: Rose a -> a
, la función se vería así:
root (Rose a) = a
Y la función dechildren :: Rose a -> [Rose a]
:
children (Rose a) = (Rose a):[]
Esto no es correcto, y no sé cómo hacerlo.