module Control.IndexT (
IndexT
) where
import GHC.TypeLits (Nat)
import Data.Functor.Identity (Identity)
type family IndexT (i :: Nat) a
type instance IndexT 0 (Identity a) = a
type instance IndexT 0 (a, _) = a
type instance IndexT 1 (_, a) = a
type instance IndexT 0 (a, _, _) = a
type instance IndexT 1 (_, a, _) = a
type instance IndexT 2 (_, _, a) = a
type instance IndexT 0 (a, _, _, _) = a
type instance IndexT 1 (_, a, _, _) = a
type instance IndexT 2 (_, _, a, _) = a
type instance IndexT 3 (_, _, _, a) = a
type instance IndexT 0 (a, _, _, _, _) = a
type instance IndexT 1 (_, a, _, _, _) = a
type instance IndexT 2 (_, _, a, _, _) = a
type instance IndexT 3 (_, _, _, a, _) = a
type instance IndexT 4 (_, _, _, _, a) = a
type instance IndexT 0 (a, _, _, _, _, _) = a
type instance IndexT 1 (_, a, _, _, _, _) = a
type instance IndexT 2 (_, _, a, _, _, _) = a
type instance IndexT 3 (_, _, _, a, _, _) = a
type instance IndexT 4 (_, _, _, _, a, _) = a
type instance IndexT 5 (_, _, _, _, _, a) = a
type instance IndexT 0 (a, _, _, _, _, _, _) = a
type instance IndexT 1 (_, a, _, _, _, _, _) = a
type instance IndexT 2 (_, _, a, _, _, _, _) = a
type instance IndexT 3 (_, _, _, a, _, _, _) = a
type instance IndexT 4 (_, _, _, _, a, _, _) = a
type instance IndexT 5 (_, _, _, _, _, a, _) = a
type instance IndexT 6 (_, _, _, _, _, _, a) = a
type instance IndexT 0 (a, _, _, _, _, _, _, _) = a
type instance IndexT 1 (_, a, _, _, _, _, _, _) = a
type instance IndexT 2 (_, _, a, _, _, _, _, _) = a
type instance IndexT 3 (_, _, _, a, _, _, _, _) = a
type instance IndexT 4 (_, _, _, _, a, _, _, _) = a
type instance IndexT 5 (_, _, _, _, _, a, _, _) = a
type instance IndexT 6 (_, _, _, _, _, _, a, _) = a
type instance IndexT 7 (_, _, _, _, _, _, _, a) = a
type instance IndexT 0 (a, _, _, _, _, _, _, _, _) = a
type instance IndexT 1 (_, a, _, _, _, _, _, _, _) = a
type instance IndexT 2 (_, _, a, _, _, _, _, _, _) = a
type instance IndexT 3 (_, _, _, a, _, _, _, _, _) = a
type instance IndexT 4 (_, _, _, _, a, _, _, _, _) = a
type instance IndexT 5 (_, _, _, _, _, a, _, _, _) = a
type instance IndexT 6 (_, _, _, _, _, _, a, _, _) = a
type instance IndexT 7 (_, _, _, _, _, _, _, a, _) = a
type instance IndexT 8 (_, _, _, _, _, _, _, _, a) = a
type instance IndexT 0 (a, _, _, _, _, _, _, _, _, _) = a
type instance IndexT 1 (_, a, _, _, _, _, _, _, _, _) = a
type instance IndexT 2 (_, _, a, _, _, _, _, _, _, _) = a
type instance IndexT 3 (_, _, _, a, _, _, _, _, _, _) = a
type instance IndexT 4 (_, _, _, _, a, _, _, _, _, _) = a
type instance IndexT 5 (_, _, _, _, _, a, _, _, _, _) = a
type instance IndexT 6 (_, _, _, _, _, _, a, _, _, _) = a
type instance IndexT 7 (_, _, _, _, _, _, _, a, _, _) = a
type instance IndexT 8 (_, _, _, _, _, _, _, _, a, _) = a
type instance IndexT 9 (_, _, _, _, _, _, _, _, _, a) = a
type instance IndexT 0 (a, _, _, _, _, _, _, _, _, _, _) = a
type instance IndexT 1 (_, a, _, _, _, _, _, _, _, _, _) = a
type instance IndexT 2 (_, _, a, _, _, _, _, _, _, _, _) = a
type instance IndexT 3 (_, _, _, a, _, _, _, _, _, _, _) = a
type instance IndexT 4 (_, _, _, _, a, _, _, _, _, _, _) = a
type instance IndexT 5 (_, _, _, _, _, a, _, _, _, _, _) = a
type instance IndexT 6 (_, _, _, _, _, _, a, _, _, _, _) = a
type instance IndexT 7 (_, _, _, _, _, _, _, a, _, _, _) = a
type instance IndexT 8 (_, _, _, _, _, _, _, _, a, _, _) = a
type instance IndexT 9 (_, _, _, _, _, _, _, _, _, a, _) = a
type instance IndexT 10 (_, _, _, _, _, _, _, _, _, _, a) = a
type instance IndexT 0 (a, _, _, _, _, _, _, _, _, _, _, _) = a
type instance IndexT 1 (_, a, _, _, _, _, _, _, _, _, _, _) = a
type instance IndexT 2 (_, _, a, _, _, _, _, _, _, _, _, _) = a
type instance IndexT 3 (_, _, _, a, _, _, _, _, _, _, _, _) = a
type instance IndexT 4 (_, _, _, _, a, _, _, _, _, _, _, _) = a
type instance IndexT 5 (_, _, _, _, _, a, _, _, _, _, _, _) = a
type instance IndexT 6 (_, _, _, _, _, _, a, _, _, _, _, _) = a
type instance IndexT 7 (_, _, _, _, _, _, _, a, _, _, _, _) = a
type instance IndexT 8 (_, _, _, _, _, _, _, _, a, _, _, _) = a
type instance IndexT 9 (_, _, _, _, _, _, _, _, _, a, _, _) = a
type instance IndexT 10 (_, _, _, _, _, _, _, _, _, _, a, _) = a
type instance IndexT 11 (_, _, _, _, _, _, _, _, _, _, _, a) = a
type instance IndexT 0 (a, _, _, _, _, _, _, _, _, _, _, _, _) = a
type instance IndexT 1 (_, a, _, _, _, _, _, _, _, _, _, _, _) = a
type instance IndexT 2 (_, _, a, _, _, _, _, _, _, _, _, _, _) = a
type instance IndexT 3 (_, _, _, a, _, _, _, _, _, _, _, _, _) = a
type instance IndexT 4 (_, _, _, _, a, _, _, _, _, _, _, _, _) = a
type instance IndexT 5 (_, _, _, _, _, a, _, _, _, _, _, _, _) = a
type instance IndexT 6 (_, _, _, _, _, _, a, _, _, _, _, _, _) = a
type instance IndexT 7 (_, _, _, _, _, _, _, a, _, _, _, _, _) = a
type instance IndexT 8 (_, _, _, _, _, _, _, _, a, _, _, _, _) = a
type instance IndexT 9 (_, _, _, _, _, _, _, _, _, a, _, _, _) = a
type instance IndexT 10 (_, _, _, _, _, _, _, _, _, _, a, _, _) = a
type instance IndexT 11 (_, _, _, _, _, _, _, _, _, _, _, a, _) = a
type instance IndexT 12 (_, _, _, _, _, _, _, _, _, _, _, _, a) = a
type instance IndexT 0 (a, _, _, _, _, _, _, _, _, _, _, _, _, _) = a
type instance IndexT 1 (_, a, _, _, _, _, _, _, _, _, _, _, _, _) = a
type instance IndexT 2 (_, _, a, _, _, _, _, _, _, _, _, _, _, _) = a
type instance IndexT 3 (_, _, _, a, _, _, _, _, _, _, _, _, _, _) = a
type instance IndexT 4 (_, _, _, _, a, _, _, _, _, _, _, _, _, _) = a
type instance IndexT 5 (_, _, _, _, _, a, _, _, _, _, _, _, _, _) = a
type instance IndexT 6 (_, _, _, _, _, _, a, _, _, _, _, _, _, _) = a
type instance IndexT 7 (_, _, _, _, _, _, _, a, _, _, _, _, _, _) = a
type instance IndexT 8 (_, _, _, _, _, _, _, _, a, _, _, _, _, _) = a
type instance IndexT 9 (_, _, _, _, _, _, _, _, _, a, _, _, _, _) = a
type instance IndexT 10 (_, _, _, _, _, _, _, _, _, _, a, _, _, _) = a
type instance IndexT 11 (_, _, _, _, _, _, _, _, _, _, _, a, _, _) = a
type instance IndexT 12 (_, _, _, _, _, _, _, _, _, _, _, _, a, _) = a
type instance IndexT 13 (_, _, _, _, _, _, _, _, _, _, _, _, _, a) = a
type instance IndexT 0 (a, _, _, _, _, _, _, _, _, _, _, _, _, _, _) = a
type instance IndexT 1 (_, a, _, _, _, _, _, _, _, _, _, _, _, _, _) = a
type instance IndexT 2 (_, _, a, _, _, _, _, _, _, _, _, _, _, _, _) = a
type instance IndexT 3 (_, _, _, a, _, _, _, _, _, _, _, _, _, _, _) = a
type instance IndexT 4 (_, _, _, _, a, _, _, _, _, _, _, _, _, _, _) = a
type instance IndexT 5 (_, _, _, _, _, a, _, _, _, _, _, _, _, _, _) = a
type instance IndexT 6 (_, _, _, _, _, _, a, _, _, _, _, _, _, _, _) = a
type instance IndexT 7 (_, _, _, _, _, _, _, a, _, _, _, _, _, _, _) = a
type instance IndexT 8 (_, _, _, _, _, _, _, _, a, _, _, _, _, _, _) = a
type instance IndexT 9 (_, _, _, _, _, _, _, _, _, a, _, _, _, _, _) = a
type instance IndexT 10 (_, _, _, _, _, _, _, _, _, _, a, _, _, _, _) = a
type instance IndexT 11 (_, _, _, _, _, _, _, _, _, _, _, a, _, _, _) = a
type instance IndexT 12 (_, _, _, _, _, _, _, _, _, _, _, _, a, _, _) = a
type instance IndexT 13 (_, _, _, _, _, _, _, _, _, _, _, _, _, a, _) = a
type instance IndexT 14 (_, _, _, _, _, _, _, _, _, _, _, _, _, _, a) = a
type instance IndexT 0 (a -> _) = a
type instance IndexT 1 (_ -> a -> _) = a
type instance IndexT 2 (_ -> _ -> a -> _) = a
type instance IndexT 3 (_ -> _ -> _ -> a -> _) = a
type instance IndexT 4 (_ -> _ -> _ -> _ -> a -> _) = a
type instance IndexT 5 (_ -> _ -> _ -> _ -> _ -> a -> _) = a
type instance IndexT 6 (_ -> _ -> _ -> _ -> _ -> _ -> a -> _) = a
type instance IndexT 7 (_ -> _ -> _ -> _ -> _ -> _ -> _ -> a -> _) = a
type instance IndexT 8 (_ -> _ -> _ -> _ -> _ -> _ -> _ -> _ -> a -> _) = a
type instance IndexT 9 (_ -> _ -> _ -> _ -> _ -> _ -> _ -> _ -> _ -> a -> _) = a
type instance IndexT 10 (_ -> _ -> _ -> _ -> _ -> _ -> _ -> _ -> _ -> _ -> a -> _) = a
type instance IndexT 11 (_ -> _ -> _ -> _ -> _ -> _ -> _ -> _ -> _ -> _ -> _ -> a -> _) = a
type instance IndexT 12 (_ -> _ -> _ -> _ -> _ -> _ -> _ -> _ -> _ -> _ -> _ -> _ -> a -> _) = a
type instance IndexT 13 (_ -> _ -> _ -> _ -> _ -> _ -> _ -> _ -> _ -> _ -> _ -> _ -> _ -> a -> _) = a