I'm preparing for my exam from nonprocedural languages. I have example of test task and I don't know how to solve it.
Task is following:
Given two tree structures:
data Tree a = Nil1 | Node1 a [Tree a]
data NumTree a = Nil2 | Node2 (a,Int) [NumTree a]
write function
numberTree :: Num a => Tree a -> NumTree a
which will return numbered NumTree a
in preorder.
I tried this, but don't know how to continue.
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))
I dont know how to write something like this myMap
,because it should return tree and the acumulated preorder number, but i don't know how to do this.
Any suggestions are welcome.