>>17
それはabc,def,ghiが全部a->a型だから通る。

例えばdef, ghiの型がInt -> Intだったらdef $ ghiってのは
引数がInt型の関数defにInt->Int型の引数ghiを突っ込むことになるので
Int ≠ Int->Intってことで型エラーになる。