有没有人知道一个C++数据结构库,提供了与熟悉的STL数据结构相对应的函数式(又称不可变的,在FP范畴中也称为“持久化”)结构?
所谓“函数式”,是指对象本身是不可变的,而对这些对象的修改会返回新的对象,这些新的对象在适当的情况下共享与父对象相同的内部。
理想情况下,这样的库将类似于STL,并且将与Boost.Phoenix很好地配合使用(注意:我实际上还没有使用过Phoenix,但据我所知,它提供了许多算法,但没有数据结构,除非对现有数据结构进行延迟计算的更改算作数据结构 - 是吗?)
有没有人知道一个C++数据结构库,提供了与熟悉的STL数据结构相对应的函数式(又称不可变的,在FP范畴中也称为“持久化”)结构?
所谓“函数式”,是指对象本身是不可变的,而对这些对象的修改会返回新的对象,这些新的对象在适当的情况下共享与父对象相同的内部。
理想情况下,这样的库将类似于STL,并且将与Boost.Phoenix很好地配合使用(注意:我实际上还没有使用过Phoenix,但据我所知,它提供了许多算法,但没有数据结构,除非对现有数据结构进行延迟计算的更改算作数据结构 - 是吗?)
我会查看并确定Yannis Smaragdakis开发的FC++是否包含任何数据结构。毫无疑问,这个项目比其他任何项目都更关注在C++中支持函数式编程风格。
http://bartoszmilewski.com/2013/11/13/functional-data-structures-in-c-lists/
看起来他在这里实现了Okasiki书中很多算法,纯函数数据结构:
https://github.com/BartoszMilewski/Okasaki
注意:我还没有尝试过这些,但它们是除FC++之外我看到的第一个C++持久化数据结构。
希望我能尽快尝试它们。