minh thu wrote: > Also, I'd like to know why > > id id True > > is permitted but not > > (\f -> f f True) id Because this requires rank-2 types: > Prelude> :set -XScopedTypeVariables > Prelude> :set -XRank2Types > Prelude> (\(f :: forall a. a -> a) -> f f True) id > True HTH, Martijn.