Haskell函数比较两个列表的项目

时间:2013-02-12 03:36:16

标签: list haskell compare

我正在编写一个名为myElems的Haskell函数

接受两个值列表,如果所有值都返回true 第一个列表位于第二个列表中。例如,myElems "db" "abcd"应返回true,而myElems [1,2] [0,1,3,4]应返回false

myElem功能就像这样

myElem n [] = False
myElem n (x:xs) = if n == x then True else myElem n xs

这个函数工作正常,但是当我尝试将它应用于具有此形式的myElems函数时

myElems xs [] = False
myElems [] ys = False
myElems (x:xs) (y:ys) = if myElem y xs /= myElem x ys then False else myElems (tail xs) (tail ys)

根本不起作用。

2 个答案:

答案 0 :(得分:2)

你的意思是

myElems [] ys = True
myElems (x:xs) ys = if myElem x ys then myElems xs ys else False

答案 1 :(得分:2)

我知道这不是确切的答案,但是Learn You Haskell书推荐的内容如何:

import qualified Data.Set as Set  
Set.fromList [2,3,4] `Set.isSubsetOf` Set.fromList [1,2,3,4,5]