質問
私はチュートリアルでこの質問を与えてきた、と私は本当にそれについて移動する方法がわからない。
必須gおよびhはその
を確保するために、PとFの観点から定義することがどのようにfilter p . map f = map g . filter h
常に保持している?
右方向のどのポインタが非常に高く評価されるだろう。
解決
これは、そのf :: a -> b
とp :: b -> Bool
をクリアしています。私たちはf
とg
に関するその他の仮定を作ることができないので、1を定義する必要があります。
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))
を選択する必要があります。
所属していません StackOverflow