在Map包中的Data.Map.Lazy模块中有containers类型(关联数组):import qualified Data.Map.Lazy as Map但是同一包中的Data.Set此外,我还可以通过类似的方法导出C++的std::multiset和std::multimap等价:newtype M
这个问题涉及到Data.MultiSet类型,我想在给定的MultiSet上迭代以创建一个新的MultiSet。对于MultiSet中的每个元素,要么在新的多集中创建一个元素,要么在新的MultiSet中创建两个新元素。我认为可以使用尾递归来实现这一点,但是我认为不可能使用MultiSet。tailRecursion :: (Multiset S
我试图实现一个完全平衡的二进制搜索树,其中大小作为类型参数给出(就像C++的std::array那样)。这是树的实现:{-# LANGUAGE KindSignatures #-}{-# LANGUAGE(n :: Nat) a where Odd :: MultiSet n a -> a -> MultiSet n
我尝试使用番石榴库创建不可变的优先级队列。作为队列‘后端’,我使用了ImmutableSortedMultiset。但我对性能有问题-操作推送和弹出速度都很慢。从排序不可变集合中添加和删除单个项的最佳方法是什么?谢谢!这是我的密码:
public class ImmutablePriorityQueue<T extends Comparable<T>> implements PriorityQueue<T> {private final ImmutableSortedMultiset&l