5

それでは、ポイントに行きましょう:

f :: Eq a => a -> [(a,[a])] -> [(a,[a])]
f x list = [(a,[m]) | (a,[m]) <- list, x == a]

それで:

   f 1 [(1,[1])] = [(1,[1])]

しかし

  f 1 [(1,[1,1])] = []

何故ですか??ありがとうございました!

(私は初心者なので、あまりにもばかげた質問である場合は申し訳ありませんが、説明が本当に見つかりません)

4

1 に答える 1

9

[1,1]パターンに一致しないため[m]です。後者は、1 つの項目のリストを意味します (型名があるべき場所で使用されない限り)。Haskell はペアの 2 番目の要素がリストであることを (listパラメーターの型を見て) 既に認識しており、それを明示的に伝える必要はありません。

于 2012-12-27T22:23:08.333 に答える