Visible type/kind applications in declaration of data/type constructors
I'm making this ticket to keep track of this, I don't know if it's a good idea.
Allow visible type/kind applications when declaring data/type constructors on the LHS of
:: (from Phab comment).
data Proxy @k :: k -> Type where MkProxy @k :: Proxy @k (a :: k)
data Fin :: N -> Type where FinO @n :: Fin (S n) FinS @n :: Fin n -> Fin (S n)
data Elem @k @n :: Vec n k -> Type where ElemO @a @as :: Elem @k @(S n) (a:>as) ElemS @a @as :: Elem @k @n as -> Elem @k @(S n) (a:>as)