[英]How to write a map statement to compare each elements of two lists in 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.