packages feed

singletons-2.7: tests/compile-and-dump/Singletons/T204.hs

module T204 where

import Control.Monad.Trans.Class
import Data.Singletons.TH
import Data.Singletons.TH.Options
import Language.Haskell.TH

$(let sing_data_con_name :: Name -> Name
      sing_data_con_name n =
        case nameBase n of
          ':':'%':rest -> mkName $ ":^%" ++ rest
          _            -> singledDataConName defaultOptions n in
  withOptions defaultOptions{singledDataConName = sing_data_con_name} $
    singletons $ lift
    [d| data Ratio1 a = a :%  a
        data Ratio2 a = a :%% a
      |])