我正在编写一个名为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)
根本不起作用。
答案 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]