Я хотел бы получить список элементов моего динамического дерева.Динамическое дерево для списка в Haskell
У меня есть два типа узлов:
- 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
Список должен включать в себя все DataNode,. Поэтому для dataList t1
список должен выглядеть так: [3, 11, 12, 42, 23]
.
Функция dataList
, которую я закодировал, не работает.
Есть ли у кого-нибудь идеи, как я могу это решить?
Тип подписи для 'dataList' не имеет никакого смысла. Вы должны начать там. (Кроме того, ваша реализация эффективно 'id :: [a] -> [a]', которая ничего не делает.) – melpomene
Попробуйте сначала определить более простую версию. Что бы вы должны написать, чтобы получить 'dataList (DataNode 42)' для возврата '[42]'? – melpomene