Я начинаю сомневаться, что мой план попасть в Haskell и функциональное программирование, используя Haskell для моего следующего курса по алгоритмам, является хорошим.
Чтобы получить некоторые линии Haskell под моим поясом, я начал пытаться реализовать некоторые простые algos. Во-первых: Гейл-Шепли для проблемы стабильного брака. Еще не получив монады, все это изменчивое состояние выглядит пугающе, поэтому вместо этого я использовал характеристику стабильных сопоставлений как фиксированных точек отображения на решетке полусогласий. Это было весело, но его уже не Gale-Shapley и сложность не очень приятная (эти цепочки в решетке могут выглядеть довольно долго:)
Далее у меня есть алгоритм для Ближайшей пары точек в плоскости, но я застрял в получении обычной сложности O (n * log n), потому что я не могу понять, как получить подобную набору данных структуру с O (1) проверка членства.
Итак, мой вопрос: может ли вообще реализовать большинство алгоритмов, например. Дейкстра, Форд-Фулкерсон (Gale-Shapley!?), Получая сложности от процедурных реализаций, если лучше получить поддержку Haskell и функционального программирования в целом?