Какая минимальная (самая общая) информация требуется для вычисления глубины a Data.Tree? Достаточен ли пример a Data.Foldable?
Сначала я попытался fold a Tree и застрял, пытаясь найти подходящее Monoid, похожее на Max. Что-то подсказывает мне, что поскольку Monoid (который будет вычислять глубину) должен быть ассоциативным, он, вероятно, не может быть использован для выражения любой форы, которая должна быть осведомлена о структуре (как в 1 + maxChildrenDepth), но я не уверен.
Интересно, какой процесс мышления позволил бы мне прийти к правильной абстракции для таких случаев.