これもわかってしまえば、分かりやすい概念かもしれないが。
GHCが暗黙の量化を行う手順は次のとおり。ユーザが書いた型の最上位(のみ)において、明示的なforallがないなら、またその時に限り、その型で言及されているもののスコープにない型変数を調べ上げ、それらを全称量化する。7.11.5.3. 暗黙の量化
をみると小難しい話なのかな?と思うが、具体例は分かりやすい。
f :: (a -> a) -> Int -- は f :: forall a. (a -> a) -> Int -- のことであり f :: (forall a. a -> a) -> Int -- ではない
なんというか数学の定義っぽいことをやっているが、代数的データ型だからそういうもんなんだろう。
ランクとはforallの深さ、つまり括弧のこと(層)のことを言っているわけである。