| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Data.Record.Internal.TH.Name
Description
Names with statically known flavour
Intended for qualified import.
Synopsis
- data Name :: NameSpace -> Flavour -> Type where
- Name :: OccName -> NameFlavour flavour -> Name ns flavour
- data Flavour
- data NameFlavour :: Flavour -> Type where
- NameDynamic :: Maybe ModName -> NameFlavour 'Dynamic
- NameUnique :: Uniq -> NameFlavour 'Unique
- NameGlobal :: NameSpace -> PkgName -> ModName -> NameFlavour 'Global
- nameBase :: Name ns flavour -> String
- mapNameBase :: (String -> String) -> Name ns flavour -> Name ns' flavour
- data Qualifier
- qualify :: Qualifier -> String -> Name ns 'Dynamic
- unqualified :: String -> Name ns 'Dynamic
- nameQualifier :: Name ns 'Dynamic -> Qualifier
- newName :: String -> Q (Name ns 'Unique)
- fromTH :: IsFlavour flavour => Name -> Maybe (Name ns flavour)
- fromTH' :: forall ns flavour. IsFlavour flavour => Name -> Name ns flavour
- toTH :: Name ns flavour -> Name
- class LookupName ns where
- reify :: Quasi m => Name ns 'Global -> m Info
- classD :: _ -> Name 'TcClsName 'Dynamic -> _
- conE :: Name 'DataName flavour -> _
- conT :: Name 'TcClsName flavour -> _
- newtypeD :: _ -> Name 'TcClsName 'Dynamic -> _
- patSynD :: Name 'DataName 'Dynamic -> _
- patSynSigD :: Name 'DataName 'Dynamic -> _
- pragCompleteD :: [Name 'DataName 'Dynamic] -> Maybe (Name 'TcClsName 'Dynamic) -> _
- recC :: Name 'DataName 'Dynamic -> _
- recordPatSyn :: [String] -> _
- sigD :: Name 'VarName 'Dynamic -> _
- varBangType :: Name 'VarName 'Dynamic -> _
- varE :: Name 'VarName flavour -> _
- varLocalP :: Name 'VarName 'Unique -> _
- varGlobalP :: Name 'VarName 'Dynamic -> _
Names
data Name :: NameSpace -> Flavour -> Type where Source #
Like TH's Name, but with statically known flavour.
Constructors
| Name :: OccName -> NameFlavour flavour -> Name ns flavour |
Instances
| Eq (Name ns flavour) Source # | |
| Ord (Name ns flavour) Source # | |
Defined in Data.Record.Internal.TH.Name Methods compare :: Name ns flavour -> Name ns flavour -> Ordering # (<) :: Name ns flavour -> Name ns flavour -> Bool # (<=) :: Name ns flavour -> Name ns flavour -> Bool # (>) :: Name ns flavour -> Name ns flavour -> Bool # (>=) :: Name ns flavour -> Name ns flavour -> Bool # max :: Name ns flavour -> Name ns flavour -> Name ns flavour # min :: Name ns flavour -> Name ns flavour -> Name ns flavour # | |
| Show (Name ns flavour) Source # | |
Name flavours (used as a kind, not as a type)
Technically speaking there is one flavour missing: names that are locally bound, but outside of the TH quote, something like
foo x = [| .. x .. |]
However, we won't actually deal with such names.
Constructors
| Dynamic | Dynamically bound Dynamically bound names will be bound to a global name by These are generated with |
| Unique | A new name These are names either generated by |
| Global | Reference to a specific name defined outside of the TH quote |
data NameFlavour :: Flavour -> Type where Source #
Constructors
| NameDynamic :: Maybe ModName -> NameFlavour 'Dynamic | Dynamically bound name, with an optional module prefix ( |
| NameUnique :: Uniq -> NameFlavour 'Unique | Unique local name |
| NameGlobal :: NameSpace -> PkgName -> ModName -> NameFlavour 'Global | Global name bound outside of the TH quot |
Instances
| Eq (NameFlavour flavour) Source # | |
Defined in Data.Record.Internal.TH.Name Methods (==) :: NameFlavour flavour -> NameFlavour flavour -> Bool # (/=) :: NameFlavour flavour -> NameFlavour flavour -> Bool # | |
| Ord (NameFlavour flavour) Source # | |
Defined in Data.Record.Internal.TH.Name Methods compare :: NameFlavour flavour -> NameFlavour flavour -> Ordering # (<) :: NameFlavour flavour -> NameFlavour flavour -> Bool # (<=) :: NameFlavour flavour -> NameFlavour flavour -> Bool # (>) :: NameFlavour flavour -> NameFlavour flavour -> Bool # (>=) :: NameFlavour flavour -> NameFlavour flavour -> Bool # max :: NameFlavour flavour -> NameFlavour flavour -> NameFlavour flavour # min :: NameFlavour flavour -> NameFlavour flavour -> NameFlavour flavour # | |
| Show (NameFlavour flavour) Source # | |
Defined in Data.Record.Internal.TH.Name Methods showsPrec :: Int -> NameFlavour flavour -> ShowS # show :: NameFlavour flavour -> String # showList :: [NameFlavour flavour] -> ShowS # | |
Simple functions
mapNameBase :: (String -> String) -> Name ns flavour -> Name ns' flavour Source #
Modify the unqualified part of the name
Since we often to do this derive one kind of name from another, the namespace of the result is not related to the namespace of the argument.
Working with qualified names
Fresh names
Conversion
fromTH :: IsFlavour flavour => Name -> Maybe (Name ns flavour) Source #
Translate from a dynamically typed TH name
Returns Nothing if the TH name does not have the specified flavour.
fromTH' :: forall ns flavour. IsFlavour flavour => Name -> Name ns flavour Source #
Variation on fromTH that throws an exception on a flavour mismatch
Resolution
class LookupName ns where Source #
Methods
lookupName :: Quasi m => Name ns 'Dynamic -> m (Maybe (Name ns 'Global)) Source #
Resolve existing name
Instances
reify :: Quasi m => Name ns 'Global -> m Info Source #
Get info about the given name
Only global names can be reified. See lookupName.
Construct TH
pragCompleteD :: [Name 'DataName 'Dynamic] -> Maybe (Name 'TcClsName 'Dynamic) -> _ Source #
Define COMPLETE pragma
recordPatSyn :: [String] -> _ Source #
Define record pattern synonym