0

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

它接受两个值列表,如果第一个列表中的所有值都在第二个列表中,则返回 true。例如,myElems "db" "abcd"应该返回truemyElems [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)

它根本不起作用。

4

2 回答 2

2

你的意思是

myElems [] ys = True
myElems (x:xs) ys = if myElem x ys then myElems xs ys else False
于 2013-02-12T03:43:38.227 回答
2

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

import qualified Data.Set as Set  
Set.fromList [2,3,4] `Set.isSubsetOf` Set.fromList [1,2,3,4,5]
于 2013-02-12T03:49:17.057 回答