packages feed

singletons-base-3.3: tests/compile-and-dump/Singletons/T487.hs

module T487 where

import Data.Singletons.Base.TH
import GHC.TypeLits.Singletons
import Text.Show.Singletons

$(singletonsOnly [d|
  exprEx :: Char
  exprEx = 'a'

  consEx :: Char -> Symbol
  consEx x = consSymbol x "bc"

  unconsEx :: Maybe (Char, Symbol)
  unconsEx = unconsSymbol "abc"

  natToCharEx :: Char
  natToCharEx = natToChar 97

  charToNatEx :: Natural
  charToNatEx = charToNat 'a'
  |])

showCharTest :: Show_ ExprEx :~: "'a'"
showCharTest = Refl

showSymbolTest :: Show_ "Hello, World!" :~: "\"Hello, World!\""
showSymbolTest = Refl

consSymbolTest :: ConsEx 'a' :~: "abc"
consSymbolTest = Refl

unconsSymbolTest :: UnconsEx :~: Just '( 'a', "bc" )
unconsSymbolTest = Refl

natToCharTest :: NatToCharEx :~: 'a'
natToCharTest = Refl

charToNatTest :: CharToNatEx :~: 97
charToNatTest = Refl