【发布时间】:2017-06-22 14:09:33
【问题描述】:
我想获取我的动态树的元素列表。
我有两种类型的节点:
- Indexnodes,可以存储两个数字和任意数量的子树/子树(也不允许子树)
- Datanodes,可以存储一个数字。
data MultTree a = DataNode a | IndexNode a a [MultTree a] deriving Show
t1 :: MultTree Int
t1 = IndexNode 3 42 [IndexNode 3 15 [DataNode 3, DataNode 11, DataNode 12], IndexNode 9 42 [DataNode 42, DataNode 23]]
dataList:: MultTree -> [DataNode] -> [Int]
dataList[] = []
dataList(x:xs) = x : dataList xs
列表必须包含所有数据节点。所以对于dataList t1,列表应该类似于[3, 11, 12, 42, 23]。
我编写的函数dataList不起作用。
有人知道我该如何解决吗?
【问题讨论】:
-
dataList的类型签名没有意义。你应该从那里开始。 (另外,你的实现实际上是id :: [a] -> [a],它什么都不做。) -
尝试先定义一个更简单的版本。你需要写什么才能让
dataList (DataNode 42)返回[42]?