RankNTypes

  • 存在型みたいなforallみたいな奴

ランク1多相

  • 通常の多相(generics)
f :: a -> a

ランク2多相

  • forall の深さが2の型
{-# LANGUAGE Rank2Types #-}
g :: (forall a. a -> a) -> Int

参考文献