Получить корень розового дерева в Хаскеле
Недавно я начал изучать 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):[]
Это не правильно, и я не знаю, как сделать это правильно.