繁体   English   中英

如何比较Haskell中的两个列表?

[英]How to compare two lists in Haskell?

在Haskell中,如何比较两个列表以检查它们是否相等? 订单也无关紧要。

例:

[1,2] = [2,1]

我尝试了all (flip elem [1,2,3]) [2,1] ,但这返回true ...

谢谢。

像这样的东西?

import Data.List (sort)
areEqual a b = sort a == sort b

OUTPUT:
*Main> areEqual [1,2] [2,1]
True

Eq a => Eq [a]http://www.haskell.org/ghc/docs/7.4.1/html/libraries/base-4.5.0.0/Data-Eq.html

您不需要额外的代码来比较列表的相等性。

[1,2] == [2,1]

如果你想将列表作为行李进行比较,那么行李是一个MultiSet ,所以寻找一个Multiset包

import "multiset" Data.MultiSet as M

-- or

import "multiset" Data.IntMultiSet as M   -- if you deal with Ints 

M.fromList [1,2] == M.fromList [2,1] 

“无订单或重复收集”的良好数据结构来自Data.Set模块:

import qualified Data.Set as S

sameElems xs ys = S.fromList xs == S.fromList ys

但是,这确实[1,1]等于[1] ,这可能不是你想要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM