[Template Haskell] Additional information in ModuleInfo
I want to write a
TemplateHaskell function that accepts a module name and a prefix and generates new identifiers for every exported term with the prefix. This would allow me to mimic qualified re-exports:
import qualified Data.Map as Map mkReexportFriendly ''Map -- =====> _Map_lookup :: (Ord k) => k -> Map.Map k v -> Maybe v _Map_lookup = Map.lookup
I can't currently do this. There's no way to determine what items are imported/exported by a module in Template Haskell. The only way to (reliably) get a
Module is with
thisModule, and then using
reifyModule, you can figure out the import lists of a given module.
This need could be satisfied with one of the following ideas:
- Extend the
ModuleInfodatatype to include the imported items from that module.
- Add another function
reifyImports :: ModName -> Q ImportInfothat provides the information.
I'm sure there are other possible solutions, too.