首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查2 list是否有任何相同的元素Haskell

检查2 list是否有任何相同的元素Haskell
EN

Stack Overflow用户
提问于 2014-12-14 17:02:20
回答 1查看 3.2K关注 0票数 2

我试着检查两个列表是否有相同的元素。

代码语言:javascript
复制
Example : 
List1 = ["John", "Thomas", "Sinclair", "Marie"]
List2 = ["Philip", "Albert", "Maria"]

结果应该是假的。

但如果是这样的话

代码语言:javascript
复制
List3 = ["John", "Thomas", "Sinclair", "Marie"]
List4 = ["Philip", "Albert", "Marie", "Edward"]

结果应该是真的,list3 e list4有同样的,"Marie“。

我的代码:

代码语言:javascript
复制
import qualified Data.Text    as Text
import qualified Data.Text.IO as Text

main = do
    list1 <- fmap Text.lines (Text.readFile "file1.txt")
    list2 <- fmap Text.lines (Text.readFile "file.txt")
    compareList list1 list2

compareList (x:xs) ys | elem x ys = True
                      |otherwise = compareList xs ys

result = 
if ((compareList list1 list2) == True)
       then putStrnLn ( " They sare elements")
          else
             putStrnLn ("They don't share elements")

我完全迷路了,代码不编译。

EN

回答 1

Stack Overflow用户

发布于 2014-12-14 17:33:41

如果不使用显式递归,则可以使用以下方法

代码语言:javascript
复制
compareList :: (Eq a) => [a] -> [a] -> Bool
compareList xs ys = foldl (\acc x -> x `elem` ys || acc) False xs
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27471710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档