Нетипичная реализация АВЛ-дерева
Реализацию АВЛ-дерева (это такой подвид деревьев поиска), к которой я имею непосредственное отношение, включили в поставку ATS.
Чем она отличается от других реализаций, коих много? Перечислим:
- управление памятью реализуется пользователем (который имеет гарантию, что вся полученная память будет освобождена)
- пользователь решает сам, каким образом узел дерева располагается в памяти (это очень важно при использовании где-нибудь в операционной системе)
- и наконец, это чудо конкурентоспособно :)
Я написал небольшую заметку по использованию.
Хотелось бы еще сказать следующее. Конечно, работа представляет хороший пример программирования, совмещенного с доказательством теорем, но это не так важно! Важно другое, а именно то, что этим можно действительно пользоваться.
Можно посмотреть с другой стороны: известно, что самобалансирующиеся деревья поиска (такие, как дерево АВЛ) очень трудно запрограммировать, потому что сравнительно несложные инварианты, требуемые для корректности, трудно соотносятся с кодом. Но в нашем случае проблема значительно упростилась благодаря использованию системы типов.

chiaroscuro