chatty-0.1.4.0: Chatty/Templates.hs
{-# LANGUAGE FlexibleInstances #-}
module Chatty.Templates where
import Language.Haskell.TH
strToType :: Name -> Q Type
strToType s = do
TyConI d <- reify s
case d of
DataD _ n _ _ _ -> conT $ simpleName n
NewtypeD _ n _ _ _ -> conT $ simpleName n
TySynD n _ _ -> conT $ simpleName n
where
simpleName :: Name -> Name
simpleName nm =
let s = nameBase nm
in case dropWhile (/=':') s of
[] -> mkName s
_:[] -> mkName s
_:t -> mkName t