Предположим, что у нас есть древовидные данные, и мы хотели бы добавить информацию о глубине каждого узла. Как мы можем легко достичь этого?Соберите данные о существующих древовидных данных
Data Tree = Node Tree Tree | Leaf
Для каждого узла мы хотели бы знать в постоянной сложности, насколько он глубокий. У нас есть данные из внешнего модуля, поэтому у нас есть информация, как показано выше. Реальный пример - это внешний HTML-парсер, который просто предоставляет дерево XML, и мы хотели бы собрать данные, например. сколько гиперссылок содержит каждый узел.
Функциональные языки созданы для перемещения деревьев и сбора данных, должно быть простое решение.
Очевидное решение будет создавать параллельную структуру. Мы можем сделать лучше?
... это не пункт функциональных языков. Кроме того, структура данных, которую вы определили, не очень полезна, поскольку она отслеживает только форму дерева, а не данные в нем. – Bakuriu
Ну, вы можете себе представить, что в нем есть большие данные, это просто упрощение. – JKS
Я не согласен с близкими голосами. В Haskell есть значительный объем знаний о аннотациях деревьев в Haskell, которые можно было бы осветить. –