On Sat, Nov 25, 2017 at 04:19:04PM +0100, Marcus Manning wrote: > But why I can call g with Just: > > > let g :: h a b -> h a b; g a = a > > g Just > > but Just is a->Maybe a Because (->) is a type constructor itself, just with convenient infix syntax: λ> :k (->) (->) :: TYPE q -> TYPE r -> *