我已經在教程中給出了這個問題,我真的不知道如何去做。過濾器/地圖組合問題Haskell
必須如何G和H磷,氟進行定義,以確保
filter p . map f = map g . filter h
一貫主張?
任何指針在正確的方向將不勝感激。
我已經在教程中給出了這個問題,我真的不知道如何去做。過濾器/地圖組合問題Haskell
必須如何G和H磷,氟進行定義,以確保
filter p . map f = map g . filter h
一貫主張?
任何指針在正確的方向將不勝感激。
很明顯,f :: a -> b
和p :: b -> Bool
。既然我們不能對f
和g
任何其他假設,一個必須定義
h = p . f
g = f
現在h :: a -> Bool
和g :: a -> b
。
想想類型。
f :: a -> b
g :: a -> b
p :: b -> Bool
h :: a -> Bool
另一種方式來看到這一點:
map g (filter h A)
是集{g(a) : with h(a) is true and a is elt from A}
filter p (map f A)
是集{f(a) : with p(f(a) is true and a is elt from A}
對於這些集合等於一定要選擇f = g
和h(a) = p(f(a))
。