Получить корень розового дерева в Хаскеле

Недавно я начал изучать Haskell, и я борюсь со следующим упражнением:

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.

Для начала мне дали следующий основной код:

data Rose a = a :> [Rose a]
    deriving (Eq, Show)

Я не знаю, что означает (:>). Я пытался понять это, набрав в ghci

Input: :t (:>)
Output: a -> [Rose a] -> Rose a

Поэтому я думаю, что это означает, что у вас естьa значение, которое будет использоваться для поискаRose a из списка и возвращаетRose aНо я все еще не понимаю, что делать дальше.

Если я смотрю на подписьroot :: Rose a -> aфункция будет выглядеть так:

root (Rose a) = a 

И функцияchildren :: Rose a -> [Rose a]:

children (Rose a) = (Rose a):[]

Это не правильно, и я не знаю, как сделать это правильно.

Ответы на вопрос(1)

Ваш ответ на вопрос