在C++和其他语言中,附加库实现了一个多索引容器,例如Boost.Multiindex。也就是说,它是一个存储一种类型值的集合,但维护了多个不同的索引。这些索引提供了不同的访问方法和排序行为,例如map、multimap、set、multiset、array等等。多索引容器的运行时复杂度通常是各个索引复杂度之和。
在Haskell中是否有相应的库或者人们自己组合呢?具体而言,最符合惯用法的方法是如何实现一个T类型的集合,既包含一个基于set的索引(T是
在Haskell中是否有相应的库或者人们自己组合呢?具体而言,最符合惯用法的方法是如何实现一个T类型的集合,既包含一个基于set的索引(T是
Ord
的实例),又包含一个基于map的索引(假设每个T都可以提供类型为K的键值,无论是显式地还是通过函数T -> K
)?