
Pokud ti jde o výsledek, spusť hugs a napiš
:t výraz
konkrétně :t (.)fst snd vrátí
(a,(b,c)) -> b
Pokud jde o postup, jaksprávně píšeš (.) fst je funkce, která má parametry typů (a->(b,c)) a a, její návratový typ je b.
Když jako první argument dostane snd typu (d,e)->e, musí platit
a->(b,c)=(d,e)->e
proto
a=(d,e)
(b,c)=e
a=(d,(b,c))
Přitom (.) fst snd je funkce, která má parametr typu a a vrací typ b, proto je hledaný typ
a->b, což je z předchozího rovno (d,(b,c))->b.
Offline