{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE MagicHash #-}

module Haskus.Utils.Types.Proxy
   ( module Data.Proxy
   , NatVal (..)
   , Proxy#
   )
where

import Data.Proxy
import Haskus.Utils.Types.Nat
import GHC.Exts (Proxy#)

-- | A natural value Proxy
data NatVal (t :: Nat) = NatVal

instance KnownNat t => Show (NatVal t) where
   show _ = show (natValue' @t)