packages feed

ttc-0.2.0.0: test/TestString.hs

{-# LANGUAGE DeriveLift #-}
{-# LANGUAGE TemplateHaskell #-}

module TestString where

-- https://hackage.haskell.org/package/template-haskell
import qualified Language.Haskell.TH.Syntax as THS

-- (ttc)
import qualified Data.TTC as TTC

------------------------------------------------------------------------------
-- $Type

newtype TestString = TestString String
  deriving (Eq, Ord, Show, THS.Lift)

instance TTC.Render TestString where
  render (TestString s) = TTC.convert s

instance TTC.Parse TestString where
  parse = TTC.asS $ Right . TestString

------------------------------------------------------------------------------
-- $API

$(TTC.mkValid "valid" ''TestString)

$(TTC.mkUntypedValid "untypedValid" ''TestString)

$(TTC.mkUntypedValidQQ "untypedValidQQ" ''TestString)