Я готовлюсь к экзамену по непроцедурным языкам. У меня есть пример тестового задания, и я не знаю, как его решить.
Задача следующая:
Даны две древовидные структуры:
data Tree a = Nil1 | Node1 a [Tree a]
data NumTree a = Nil2 | Node2 (a,Int) [NumTree a]
функция записи
numberTree :: Num a => Tree a -> NumTree a
который вернет номер NumTree a
в предварительном порядке.
Я попробовал это, но не знаю, как продолжить.
numberTree tree = numberTree' tree 1
numberTree' :: Num a => Tree a -> Int -> NumTree a
numberTree' Nil1 _ = Nil2
numberTree' (Node1 num list) x = (Node2 (num,x) (myMap x numberTree list))
Я не знаю, как написать что-то вроде этого myMap
, потому что он должен возвращать дерево и накопленный номер предзаказа, но я не знаю, как это сделать.
Любые предложения приветствуются.
Num a
. - person melpomene   schedule 17.06.2016numberTree' :: Tree a -> Int -> (NumTree a, Int)
. - person melpomene   schedule 17.06.2016numberTree' :: Tree a -> Int -> NumTree a
или нет? - person Vojacejo   schedule 17.06.2016Num a
потому что в дереве будут числа - person Vojacejo   schedule 17.06.2016numberTree
не должна заботиться об элементах дерева, она должна просто добавлять числа. - person melpomene   schedule 17.06.2016