{-# LANGUAGE TypeData #-}
module TDGADT where

import Data.Kind (Type)

type data Nat = Zero | Succ Nat

-- type level GADT
type data Vec :: Nat -> Type -> Type where
    VNil :: Vec Zero a
    VCons :: a -> Vec n a -> Vec (Succ n) a

type X = VCons Bool (VCons Int VNil)

