套
此包提供了重载术语,通常与类集合类型一起使用,喜欢地图
和设置
从集装箱
也有非正统的,大多是无用的这里定义的数据类型-处理顺序、唯一性和有限性。
用法
以下操作过载:
二进制运算符:
顶部和底部元素:
元素线操作:
指标和比较:
每个操作都有自己的类型类。我们还制造了新型包装纸对于列表,对于不同的限制:
这样,我们可以预期以下工作:
唯一附加::等式a=>[a]->[a]->[a]uniqueAppend xs-ys=unUUSet$fromFoldable xs`union` fromFoldeable ysorderedAppend::Ord a=>[a]->[a]->[a]orderedAppend xs-ys=unOMSet$fromFoldable xs`union` fromFoldeable ys
我们还制作了一些新类型来编码二进制操作单体
和半群
实例:
instance(HasUnion s,HasEmpty s)=>Monoid(Union s)其中mempty=空mappend=联合
多个集合类型
要使用重载术语,它们必须是范围内唯一的术语。为了做到这一点正确,我们需要小心导入容器:
导入合格数据。设置为集合导入数据。Map(Map)--仅指定行为的类型名称foo::映射foo=x`union`ybar::设置。设置bar=a`union`b
这样,我们可以使代码更具可读性,同时仍然具有集合式的直觉。
测试和基准测试
您可以查看结果在这里(警告:这是一个7MB的文本文件-您的浏览器会讨厌您)
这些测试是用QuickCheck构建的-很容易让它们为您工作:
电缆安装--启用测试阴谋测试--show-details=始终
(……或者对于烟囱工人……)
堆栈构建烟囱试验
要进行基准测试(在我的笔记本电脑上通常需要大约10分钟),请运行命令!
电缆安装--启用基准标记阴谋家的长凳
(……污点叠加是一种联合打击……)
堆栈构建stack bench--benchmark-arguments=“--output profile.html”