0

myElemsと呼ばれるHaskell関数を書いています

これは2つの値のリストを取り、最初のリストのすべての値が2番目のリストにある場合に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)

まったく機能しません。

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 YouHaskellの本が推奨していることはどうですか?

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 に答える