3

multiples x [y]x は指定された整数、y はリストの形式で、指定された整数の倍数を整数のリストから削除する関数を作成しようとしています。

ここに私が持っているものがあります:

multiples :: Integer -> [Integer] -> [Integer]
multiples a [] = []
multiples a [b] = filter (\l -> l `mod` a /= 0) [b]

multiples呼び出されると失敗し、「関数の倍数の非網羅的なパターン」と言って失敗します。そこでghci -Wall、どのパターンが欠落しているかを確認するために自分のファイルを使用したところ、次のように返されました。

multiples.hs:2:1: warning: [-Wincomplete-patterns]
    Pattern match(es) are non-exhaustive
    In an equation for `multiples': Patterns not matched: _ (_:_:_)

multiples.hs:2:11: warning: [-Wunused-matches]
    Defined but not used: `a'

2行目で本当に単純なものが欠けているような気がしますが、少し行き詰まっています。私は何を間違っていますか?

4

2 に答える 2