我想知道haskell中是否有一个函数来确定列表中的每个元素是否在另一个列表中。我自己写的,但它似乎会在Prelude
或Data.List
each :: Eq a => [a] -> [a] -> Bool
each xs ys = foldl (\acc x -> if x `elem` ys then True && acc else False) True xs
这样的东西已经存在了吗?
您特别想要的集合操作不在 Prelude 中,但all
使定义有些琐碎(尽管不一定有效)。
-- Check if every element in xs is in ys (i.e., is xs a subset of ys)
each xs ys = all (`elem` ys) xs
假设您的列表没有重复值,您可以尝试(\\)
.
import Data.List
-- Check if removing all elements in ys from xs produces an empty list.
each xs ys = null (xs \\ ys)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句