Я готовлюсь к экзамену с непроцедурных языков. У меня есть пример тестовой задачи, и я не знаю, как ее решить.Haskell - Нумерация дерева подкатегорий
Задача заключается в следующем:
Учитывая две древовидные структуры:
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
, потому что она должна возвращать дерево и acumulated число предпорядком, но я не знаю, как это сделать.
Любые предложения приветствуются.
Я не понимаю, почему вам нужно ограничение «Num a». – melpomene
Я думаю, что ваша вспомогательная функция должна иметь тип 'numberTree ':: Tree a -> Int -> (NumTree a, Int)'. – melpomene
спасибо, но я думаю, что это 'numberTree ':: Tree a -> Int -> NumTree a' или нет? – Vojacejo