Функциональные структуры данных в C ++ - PullRequest
22 голосов
/ 03 мая 2010

Кто-нибудь знает библиотеку структур данных C ++, предоставляющую функциональные (a.k.a. неизменяемые или «постоянные» в смысле FP) эквиваленты знакомых структур STL?

Под «функционалом» я подразумеваю, что сами объекты являются неизменяемыми, в то время как модификации этих объектов возвращают новые объекты, совместно использующие те же внутренние элементы, что и родительский объект, где это необходимо.

В идеале такая библиотека должна быть похожа на STL и хорошо работать с Boost.Phoenix (предостережение: я на самом деле не использовал Phoenix, но, насколько я могу судить, она предоставляет много алгоритмов, но не имеет структур данных, если только не лениво). рассчитывается изменение существующей структуры данных - да?)

Ответы [ 2 ]

4 голосов
/ 03 мая 2010

Я бы посмотрел и увидел, включает ли FC ++ , разработанный Яннисом Смарагдакисом, какие-либо структуры данных. Конечно, этот проект больше, чем любой другой, посвящен поддержке функционального стиля в C ++.

2 голосов
/ 11 декабря 2013

Это скорее подробный ответ, чем подробный ответ, но Бартош Милевски, похоже, проделал большую работу над этим. Смотрите, например:

http://bartoszmilewski.com/2013/11/13/functional-data-structures-in-c-lists/

Похоже, он реализовал множество алгоритмов из книги Окасики "Чисто функциональные структуры данных" здесь:

https://github.com/BartoszMilewski/Okasaki

N.B. Я еще не пробовал, но это первые C ++ постоянные структуры данных, которые я видел за пределами FC ++.

Надеюсь, скоро я их попробую.

...