TypeNats に関する GHC wikiのセクションを閲覧していたときに、この非常に興味深い例を見つけました。彼らはタイプのリストを作成しています:
type family Get (n :: Nat1) (xs :: [*]) :: *
type instance Get Zero (x `: xs) = x
type instance Get (Succ n) (x `: xs) = Get n xs
これについてもっと知りたいです。この機能は 7.6.1 では実装されていないと思います (少なくとも私にはコンパイルされません)。何を探すべきか考えていますか?