私はハスケルを初め、いくつかの簡単な演習をしています。この練習では、あるリストが再帰を使って別のリストのサブセットであるかどうかをチェックする関数を書いています。ここで非常にシンプルなHaskellコードは機能しません。 "範囲外の変数"
はコードです:
subset [] xs = True
subset (x:xs) ys = if elem x ys == False then False
else subset (tail xs) (delete x ys)
私は次のエラーメッセージになっている:これも何を意味するの
C:\Functioneel programmeren\week4.hs:9:43: error:
Variable not in scope: delete :: t1 -> t t1 -> t t1
を?
このプログラムは唯一私が「YS」に「(XのYSを削除)」に変更するときに動作しますが、それは行うことになっているもの行いません。
事前に感謝の意を表します。
「削除」はどこに定義されていますか?ところでhttp://hackage.haskell.org/package/base-4.9.1.0/docs/Data-List.html#v:delete – Polygnome
'if'は' elem x ys && subset ... 'のように読みやすい形式で書き直すことができます。通常、Haskellでは '== False'と' if..then False'を避ける傾向があります。また、 'tail xs'は間違っています。代わりに' xs'をしたくないのですか? – Meurth
:私はHaskellでは組み込み関数だったという印象の下にあった – chi