ランクの種類が大きいほど面白く見えます。 Haskell wikibookからこの例を付属しています。 Haskellで上位ランクのタイプを使用したことは何ですか?
foo :: (forall a. a -> a) -> (Char,Bool)
foo f = (f 'c', f True)
は、今、私たちは、コンパイラが爆発せずに
foo id
を評価することができます。この例題は、私がいくつかの場所で見た実世界の例であるSTモナドと
runST
によって、本の中で素早く追跡されています。それはいいね。
しかし、私は、上位ランクの引数を使用して自分の関数を記述することによって問題を解決する状況にはまだ直面していません。あなたは?野生でランク2またはランクn多型の例はありますか?