Я проектирую собственное балансировочное дерево в Haskell. Как упражнение и потому, что приятно иметь в своей задней руке.
Раньше в C и Python я предпочитал Treaps и Splay Trees из-за их простых правил балансировки. Мне всегда не нравилось R/B Trees, так как они казались больше работы, чем они стоили.
Теперь, из-за функционального характера Haskell, все, кажется, изменилось. Я могу написать функцию вставки R/B в 10 строках кода. Treaps, с другой стороны, требует обертывания для хранения генератора случайных чисел, а Splay Trees - боль делать сверху вниз.
Итак, я спрашиваю, есть ли у вас опыт работы с другими типами деревьев? Какие из них лучше подходят для сопоставления шаблонов и сверху вниз функциональных языков?