haskell中的列表中是否存在差异Ord运算符?

Ale*_*dar 4 haskell set-difference

我想在2个整数列表之间设置差异,这允许在haskell中重复.

因此,如果有[1,2,1,4,3] [1,2,4],差异将是[1,3]

目前我可以通过普通\\运营商来做到这一点listA \\ listB.

但问题是这个问题太慢了.由于整数在ord组中,因此可以更快地完成.

我知道这个Data.Multiset模块可以更快地完成它,但是在没有Data.Multiset模块的列表上有没有本地方法呢?

Bar*_*icz 6

由于整数在ord组中,因此可以更快地完成.

是的,但它需要构建一个排序索引.这就是Data.Multiset正在做的事情.你当然可以编写一个手动执行此操作的操作,但Multiset到那时你将有效地重新实现.