Safe Haskell | None |
---|---|
Language | Haskell2010 |
Additional utilities for working with haskell-src-exts
Synopsis
- extensionFromTH :: Extension -> Extension
- processRecordPuns :: forall l. Data l => Pat l -> Pat l
- fromHseName :: Name -> Name flavour 'Dynamic
- resolveHseName :: (Quasi m, LookupName ns') => (String -> String) -> Name ns 'Dynamic -> m (Maybe (Name ns' 'Global))
- resolveKnownHseName :: (Quasi m, LookupName ns') => (String -> String) -> Name ns 'Dynamic -> m (Name ns' 'Global)
Language extensions
extensionFromTH :: Extension -> Extension Source #
Translate TH extension into HSE extension
Useful in combination with extsEnabled
.
Naming
fromHseName :: Name -> Name flavour 'Dynamic Source #
HSE generated names are always dynamically bound
resolveHseName :: (Quasi m, LookupName ns') => (String -> String) -> Name ns 'Dynamic -> m (Maybe (Name ns' 'Global)) Source #
Resolve HSE generated name
As mentioned in fromHseName
, HSE generated names are always dynamically
bound, and we therefore need to do a "renaming pass": we need to resolve the
name. However, the exact name we want to lookup might not be the name as it
appears in the QQ place; for if the user writes MkR
, the name we actually
want to look up might be, say, LR__MkR
.
resolveKnownHseName :: (Quasi m, LookupName ns') => (String -> String) -> Name ns 'Dynamic -> m (Name ns' 'Global) Source #
Variation on resolveHseName
that fails if the name is not known