{-# LANGUAGE MonoLocalBinds #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE MultiParamTypeClasses #-}
module Graph.Trace.Internal.RuntimeRep
  ( Lev
  ) where

import           GHC.Exts

class DummyConstraint
instance DummyConstraint
DummyConstraint

-- | Allows for a levity polymorphic value to be used in an argument position.
-- This trick was taken from Ed Kmett's `unboxed` library.
type Lev (a :: TYPE rep) = DummyConstraint => a