我正在为我的函数式编程课程的作业而研究关于树的练习,更具体地说是关于Rose Tree。在我们得到的框架中,数据类型“Rose”已经定义好了,但它有一个运算符:>。我在hoogle上搜索了一下,它表示序列的最右边元素和其余序列。(以下是部分框架内容)
data Rose a = a :> [Rose a]
deriving (Eq, Show)
-- Exercise 1
root :: Rose a -> a
root = undefined
children :: Rose a -> [Rose a]
children = undefined
我并不需要你们告诉我如何制作根和子功能。但如果你们能给我一些关于如何阅读“data Rose a”行的提示,或者展示一下玫瑰树是如何构建的,那将会是很大的帮助,因为我喜欢做这些练习。
我希望有人能指点我正确的方向。