module Data.Random.Internal.TH where
import Data.Generics
import Language.Haskell.TH
import Data.Word
import Data.Int
integralTypes =
[ ''Int, ''Integer
, ''Int8, ''Int16, ''Int32, ''Int64
, ''Word8, ''Word16, ''Word32, ''Word64
]
realFloatTypes =
[ ''Float, ''Double ]
replaceName :: Name -> Name -> Name -> Name
replaceName x y z
| x == z = y
| otherwise = z
replicateInstances standin types decls = do
decls <- decls
sequence
[ everywhereM (mkM (return . replaceName standin t)) dec
| t <- types
, dec <- decls
]