2012-12-27 10 views
5

それでは、ポイントに行ってみましょう:ハスケル - タプルのリストでリスト内包表記([A])

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])] = [] 

それはなぜですか? ありがとうございました!

(私は初心者だけど、それはあまりにもばかな質問だ場合、私は謝罪が、私は本当に説明を見つけることができません)[1,1]パターン[m]と一致しないためです

答えて

9

。後者は、1つの項目のリストを意味します(ただし、型名が必要な場合は使用されません)。 Haskellはすでに、ペアの2番目の要素が(listパラメータの型を調べることによって)リストであることを知っており、明示的にそれを伝える必要はありません。

+0

私はちょうど今すぐに瞬発していました!ハハ。正確には、[m]は1つの要素のリストを意味し、今はそれを取得します。どうもありがとうございました! = D – dehq