{-# LANGUAGE DataKinds #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE Safe #-}
{-# OPTIONS_HADDOCK show-extensions #-}
module CLaSH.Promoted.Symbol
(SSymbol (..), ssymbol, ssymbolToString)
where
import Data.Proxy
import GHC.TypeLits (KnownSymbol, Symbol, symbolVal)
data SSymbol (s :: Symbol) = KnownSymbol s => SSymbol (Proxy s)
instance Show (SSymbol s) where
show (SSymbol s) = symbolVal s
{-# INLINE ssymbol #-}
ssymbol :: KnownSymbol s => SSymbol s
ssymbol = SSymbol Proxy
{-# INLINE ssymbolToString #-}
ssymbolToString :: SSymbol s -> String
ssymbolToString (SSymbol s) = symbolVal s