RankNTypes 存在型みたいなforallみたいな奴 ランク1多相 通常の多相(generics) f :: a -> a ランク2多相 forall の深さが2の型 {-# LANGUAGE Rank2Types #-} g :: (forall a. a -> a) -> Int 参考文献 HaskellのRank2Typesがだいぶわかるやつ - Qiita