Есть ли приоритетная реализация очереди в ATS?

Мне нужно сделать какой-то приоритетный поиск. Может ли кто-нибудь указать мне на реализацию приоритетной очереди в ATS?

2 ответа

Вы можете легко основать приоритетную очередь на биномиальной куче.

В ATS есть две реализации биномиальных куч. Вот несколько вариантов использования:

https://github.com/githwxi/ATS-Postiats/blob/master/doc/EXAMPLE/ATSLIB/libats_linheap_binomial.dats

https://github.com/githwxi/ATS-Postiats/blob/master/doc/EXAMPLE/ATSLIB/libats_linheap_binomial2.dats

Я придумал небезопасную max-кучу на основе C (основанную на чьем-то другом). Я думаю, что это показывает, что взаимодействие с кодом C в ATS, хотя в целом небезопасно, сделать очень просто.

Смотрите полный образец на Glot.io

РЕДАКТИРОВАТЬ: вот еще одна реализация, на этот раз в ATS. Хотя это немного хлопотно (слишком много индексов в типе!), Но ключевая особенность этого кода в том, что он безопасен по типу и в то же время очень близок к типичной реализации C с точки зрения поведения во время выполнения.,

Другие вопросы по тегам