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.

Respuestas a la pregunta(1)

Su respuesta a la pregunta