{-# LANGUAGE DataKinds #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
module Control.Variadic.Varargs where

-- | Glorified HList representing variadic arguments.
data family Varargs (l :: [*])
data instance Varargs '[] = Nil
data instance Varargs (x ': xs) = x `Cons` Varargs xs
infixr 2 `Cons`