Language.Haskell.TH.Syntax
| Авторские права | (c) Университет Глазго 2003 |
|---|---|
| Лицензия | Стиль BSD (см. файл libraries/base/LICENSE) |
| Поддерживающий | libraries@haskell.org |
| Стабильность | экспериментальная |
| Переносимость | переносимая |
| Безопасный Haskell | Надежный |
| Язык | Haskell2010 |
Содержание
Описание
Определения абстрактной синтаксической формы для Template Haskell.
returnQ :: a -> Q a Исходный код
bindQ :: Q a -> (a -> Q b) -> Q b Исходный код
sequenceQ :: [Q a] -> Q [a] Исходный код
newName :: Строка -> Q Имя Исходный код
Генерирует свежее имя, которое не может быть захвачено.
Например, это:
f = $(do nm1 <- newName "x" let nm2 = mkName "x" return (LamE [VarP nm1] (LamE [VarP nm2] (VarE nm1))) )
выведет вставка
f = \x0 -> \x -> x0
В частности, вхождение VarE nm1 относится к связыванию VarP nm1, и не захватывается связыванием VarP nm2.
Хотя имена, сгенерированные с помощью newName не могут быть захвачены, они могут захватить другие имена. Например, это:
g = $(do nm1 <- newName "x" let nm2 = mkName "x" return (LamE [VarP nm2] (LamE [VarP nm1] (VarE nm2))) )
выведет вставку
g = \x -> \x0 -> x0
поскольку вхождение VarE nm2 захвачено внутренним связыванием x, а именно VarP nm1.
mkName :: Строка -> Имя Исходный код
Генерирует имя, которое может быть захвачено. Вхождения таких имён будут разрешаться в соответствии с правилами области видимости Haskell в месте вхождения.
Например:
f = [| pi + $(varE (mkName "pi")) |] ... g = let pi = 3 in $f
В этом случае g раскладывается в
g = Prelude.pi + 3
Обратите внимание, что mkName можно использовать с квалифицированными именами:
mkName "Prelude.pi"
См. также dyn для полезного комбинатора. Вышеприведенный пример можно переписать с помощью dyn как
f = [| pi + $(dyn "pi") |]
mkNameG_v :: Строка -> Строка -> Строка -> Имя Исходный код
mkNameG_d :: Строка -> Строка -> Строка -> Имя Исходный код
mkNameG_tc :: Строка -> Строка -> Строка -> Имя Исходный код
mkNameL :: Строка -> Уникальный -> Имя Исходный код
Используется только во внутреннем режиме
mkNameS :: Строка -> Имя Исходный код
unTypeQ :: forall (r :: ТипВыполнения) (a :: ТИП r). Q (TExp a) -> Q Exp Исходный код
Отбрасывает аннотацию типа и генерирует простое выражение Template Haskell.
Легковесный полиморфизм с момента template-haskell-2.16.0.0.
unsafeTExpCoerce :: forall (r :: ТипВыполнения) (a :: ТИП r). Q Exp -> Q (TExp a) Исходный код
Добавляет аннотацию типа к выражению Template Haskell.
Это небезопасно, потому что GHC не может проверить, что выражение действительно имеет тот тип, который вы утверждаете.
Легковесный полиморфизм с момента template-haskell-2.16.0.0.
liftString :: Строка -> Q Exp Исходный код
class Поднятие (t :: ТИП r) where Исходный код
Инстанс Lift может иметь любые свои значения, преобразованные в выражение Template Haskell. Это необходимо, когда значение, используемое внутри цитаты Template Haskell, связано за пределами скобок Оксфорда ([| ... |] или [|| ... ||]) но не на верхнем уровне. Например:
add1 :: Int -> Q (TExp Int) add1 x = [|| x + 1 ||]
Template Haskell не знает, какое значение x примет во время вставки, поэтому ему нужен тип x для того, чтобы он был экземпляром Lift.
Инстанс Lift должен удовлетворять $(lift x) ≡ x и $$(liftTyped x) ≡ x для всех x, где $(...) и $$(...) являются вставками Template Haskell. Дополнительно ожидается, что lift x ≡ unTypeQ (liftTyped x).
Инстансы Lift могут быть получены автоматически с помощью расширения языка GHC -XDeriveLift.
{-# LANGUAGE DeriveLift #-}
module Foo where
import Language.Haskell.TH.Syntax
data Bar a = Bar1 a (Bar a) | Bar2 String
deriving Lift
Легковесный полиморфизм с момента template-haskell-2.16.0.0.
Минимальное полное определение
Экземпляры
| Lift Bool | |
Определено в Language.Haskell.TH.Syntax | |
| Lift Char | |
Определено в Language.Haskell.TH.Syntax | |
| Lift Double | |
Определено в Language.Haskell.TH.Syntax | |
| Lift Float | |
Определено в Language.Haskell.TH.Syntax | |
| Lift Int | |
Определено в Language.Haskell.TH.Syntax | |
| Lift Int8 | |
Определено в Language.Haskell.TH.Syntax | |
| Lift Int16 | |
Определено в Language.Haskell.TH.Syntax | |
| Lift Int32 | |
Определено в Language.Haskell.TH.Syntax | |
| Lift Int64 | |
Определено в Language.Haskell.TH.Syntax | |
| Lift Integer | |
Определено в Language.Haskell.TH.Syntax | |
| Lift Natural | |
Определено в Language.Haskell.TH.Syntax | |
| Lift Word | |
Определено в Language.Haskell.TH.Syntax | |
| Lift Word8 | |
Определено в Language.Haskell.TH.Syntax | |
| Lift Word16 | |
Определено в Language.Haskell.TH.Syntax | |
| Lift Word32 | |
Определено в Language.Haskell.TH.Syntax | |
| Lift Word64 | |
Определено в Language.Haskell.TH.Syntax | |
| Lift () | |
Определено в Language.Haskell.TH.Syntax | |
| Lift Void | С версии: template-haskell-2.15.0.0 |
Определено в Language.Haskell.TH.Syntax | |
| Lift Int# | С версии: template-haskell-2.16.0.0 |
Определено в Language.Haskell.TH.Syntax | |
| Lift Char# | С версии: template-haskell-2.16.0.0 |
Определено в Language.Haskell.TH.Syntax | |
| Lift Word# | С версии: template-haskell-2.16.0.0 |
Определено в Language.Haskell.TH.Syntax | |
| Lift Addr# |
Создаёт С версии: template-haskell-2.16.0.0 |
Определено в Language.Haskell.TH.Syntax | |
| Lift Float# | С момента: template-haskell-2.16.0.0 |
Определено в Language.Haskell.TH.Syntax | |
| Lift Double# | С момента: template-haskell-2.16.0.0 |
Определено в Language.Haskell.TH.Syntax | |
| Lift a => Lift ([a] :: Тип) | |
Определено в Language.Haskell.TH.Syntax | |
| Lift a => Lift (Maybe a :: Тип) | |
Определено в Language.Haskell.TH.Syntax | |
| Целочисленный a => Lift (Ratio a :: Тип) | |
Определено в Language.Haskell.TH.Syntax | |
| Lift a => Lift (NonEmpty a :: Тип) | С момента: template-haskell-2.15.0.0 |
Определено в Language.Haskell.TH.Syntax | |
| (Lift a, Lift b) => Lift (Either a b :: Тип) | |
| (Lift a, Lift b) => Lift ((a, b) :: Type) | |
| (Lift a, Lift b, Lift c) => Lift ((a, b, c) :: Type) | |
| (Lift a, Lift b, Lift c, Lift d) => Lift ((a, b, c, d) :: Type) | |
| (Lift a, Lift b, Lift c, Lift d, Lift e) => Lift ((a, b, c, d, e) :: Type) | |
| (Lift a, Lift b, Lift c, Lift d, Lift e, Lift f) => Lift ((a, b, c, d, e, f) :: Type) | |
| (Lift a, Lift b, Lift c, Lift d, Lift e, Lift f, Lift g) => Lift ((a, b, c, d, e, f, g) :: Type) | |
| Lift (# #) | С версии: template-haskell-2.16.0.0 |
| Lift a => Lift ((# a #) :: TYPE ('TupleRep '['LiftedRep])) | С версии: template-haskell-2.16.0.0 |
| (Lift a, Lift b) => Lift ((# a, b #) :: TYPE ('TupleRep '['LiftedRep, 'LiftedRep])) | С версии: template-haskell-2.16.0.0 |
| (Lift a, Lift b) => Lift ((# a | b #) :: TYPE ('SumRep '['LiftedRep, 'LiftedRep])) | С версии: template-haskell-2.16.0.0 |
| (Lift a, Lift b, Lift c) => Lift ((# a, b, c #) :: TYPE ('TupleRep '['LiftedRep, 'LiftedRep, 'LiftedRep])) | С версии: template-haskell-2.16.0.0 |
| (Lift a, Lift b, Lift c) => Lift ((# a | b | c #) :: TYPE ('SumRep '['LiftedRep, 'LiftedRep, 'LiftedRep])) | С версии: template-haskell-2.16.0.0 |
| (Lift a, Lift b, Lift c, Lift d) => Lift ((# a, b, c, d #) :: TYPE ('TupleRep '['LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep])) | С версии: template-haskell-2.16.0.0 |
| (Lift a, Lift b, Lift c, Lift d) => Lift ((# a | b | c | d #) :: TYPE ('SumRep '['LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep])) | С версии: template-haskell-2.16.0.0 |
| (Lift a, Lift b, Lift c, Lift d, Lift e) => Lift ((# a, b, c, d, e #) :: TYPE ('TupleRep '['LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep])) | С версии: template-haskell-2.16.0.0 |
| (Lift a, Lift b, Lift c, Lift d, Lift e) => Lift ((# a | b | c | d | e #) :: TYPE ('SumRep '['LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep])) | С версии: template-haskell-2.16.0.0 |
| (Lift a, Lift b, Lift c, Lift d, Lift e, Lift f) => Lift ((# a, b, c, d, e, f #) :: TYPE ('TupleRep '['LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep])) | С версии: template-haskell-2.16.0.0 |
| (Lift a, Lift b, Lift c, Lift d, Lift e, Lift f) => Lift ((# a | b | c | d | e | f #) :: TYPE ('SumRep '['LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep])) | Since: template-haskell-2.16.0.0 |
| (Lift a, Lift b, Lift c, Lift d, Lift e, Lift f, Lift g) => Lift ((# a, b, c, d, e, f, g #) :: TYPE ('TupleRep '['LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep])) | Since: template-haskell-2.16.0.0 |
| (Lift a, Lift b, Lift c, Lift d, Lift e, Lift f, Lift g) => Lift ((# a | b | c | d | e | f | g #) :: TYPE ('SumRep '['LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep, 'LiftedRep])) | Since: template-haskell-2.16.0.0 |
Конструкторы
| VarE Имя | { x } |
| ConE Имя | data T1 = C1 t1 t2; p = {C1} e1 e2 |
| LitE Лит | { 5 or 'c'} |
| AppE Выр Выр | { f x } |
| AppTypeE Выр Тип | { f @Int } |
| InfixE (МожетБыть Выр) Выр (МожетБыть Выр) | {x + y} or {(x+)} or {(+ x)} or {(+)} |
| UInfixE Выр Выр Выр |
{x + y}
|
| ParensE Выр |
{ (e) }
|
| LamE [Шаблон] Выр | { \ p1 p2 -> e } |
| LamCaseE [Сопоставление] | { \case m1; m2 } |
| TupE [МожетБыть Выр] |
{ (e1,e2) }
Для обработки секций кортежей необходимо (1,) переводится в TupE [Just (LitE (IntegerL 1)),Nothing] |
| UnboxedTupE [МожетБыть Выр] |
{ (# e1,e2 #) }
Для обработки секций кортежей необходимо (# 'c', #) переводится в UnboxedTupE [Just (LitE (CharL 'c')),Nothing] |
| UnboxedSumE Выр SumAlt SumArity | { (#|e|#) } |
| CondE Выр Выр Выр | { if e1 then e2 else e3 } |
| MultiIfE [(Защита, Выр)] | { if | g1 -> e1 | g2 -> e2 } |
| LetE [Декл] Выр | { let { x=e1; y=e2 } in e3 } |
| CaseE Выр [Сопоставление] | { case e of m1; m2 } |
| DoE [Утверждение] | { do { p <- e1; e2 } } |
| MDoE [Утверждение] | { mdo { x <- e1 y; y <- e2 x; } } |
| CompE [Утверждение] |
{ [ (x,y) | x <- xs, y <- ys ] }
Выражение результата понимания — последнее из Например, перевод: [ f x | x <- xs ] CompE [BindS (VarP x) (VarE xs), NoBindS (AppE (VarE f) (VarE x))] |
| ArithSeqE Диапазон | { [ 1 ,2 .. 10 ] } |
| ListE [Выр] | { [1,2,3] } |
| SigE Выр Тип | { e :: t } |
| RecConE Имя [FieldExp] | { T { x = y, z = w } } |
| RecUpdE Выр [FieldExp] | { (f x) { z = w } } |
| StaticE Выр | { static e } |
| UnboundVarE Имя |
{ _x }
Используется для дыр или неразрешённых идентификаторов в цитатах AST. Обратите внимание, что он может иметь имя переменной или имя конструктора. |
| LabelE Строка |
|
| ImplicitParamVarE Строка |
|
Экземпляры
| Eq Exp | |
| Data Exp | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Exp -> c Exp Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Exp Источник toConstr :: Exp -> Constr Источник dataTypeOf :: Exp -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Exp) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Exp) Источник gmapT :: (forall b. Data b => b -> b) -> Exp -> Exp Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Exp -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Exp -> r Источник gmapQ :: (forall d. Data d => d -> u) -> Exp -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> Exp -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> Exp -> m Exp Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Exp -> m Exp Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Exp -> m Exp Источник | |
| Ord Exp | |
Определено в Language.Haskell.TH.Syntax Методыcompare :: Exp -> Exp -> Ordering Исходный код (<) :: Exp -> Exp -> Bool Исходный код (<=) :: Exp -> Exp -> Bool Исходный код (>) :: Exp -> Exp -> Bool Исходный код (>=) :: Exp -> Exp -> Bool Исходный код max :: Exp -> Exp -> Exp Исходный код min :: Exp -> Exp -> Exp Исходный код | |
| Show Exp | |
Определено в Language.Haskell.TH.Syntax МетодыshowsPrec :: Int -> Exp -> ShowS Исходный код show :: Exp -> String Исходный код showList :: [Exp] -> ShowS Исходный код | |
| Generic Exp | |
Определено в Language.Haskell.TH.Syntax Связанные типыtype Rep Exp :: Type -> Type Исходный код | |
| Ppr Exp | |
Определено в Language.Haskell.TH.Ppr | |
| type Rep Exp | |
Определено в Language.Haskell.TH.Syntax | |
NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FieldExp])))) :+: ((C1 ('MetaCons "StaticE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: C1 ('MetaCons "UnboundVarE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))) :+: (C1 ('MetaCons "LabelE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)) :+: C1 ('MetaCons "ImplicitParamVarE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)))))) |
Экземпляры
| Eq Match | |
| Data Match | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Match -> c Match Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Match Источник toConstr :: Match -> Constr Источник dataTypeOf :: Match -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Match) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Match) Источник gmapT :: (forall b. Data b => b -> b) -> Match -> Match Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Match -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Match -> r Источник gmapQ :: (forall d. Data d => d -> u) -> Match -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> Match -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> Match -> m Match Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Match -> m Match Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Match -> m Match Источник | |
| Ord Match | |
Определено в Language.Haskell.TH.Syntax type Rep Match = D1 ('MetaData "Match" "Language.Haskell.TH.Syntax" "template-haskell" 'False) (C1 ('MetaCons "Match" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Body) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Dec])))) |
Экземпляры
| Eq Clause | |
| Data Clause | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Clause -> c Clause Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Clause Источник toConstr :: Clause -> Constr Источник dataTypeOf :: Clause -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Clause) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Clause) Источник gmapT :: (forall b. Data b => b -> b) -> Clause -> Clause Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Clause -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Clause -> r Источник gmapQ :: (forall d. Data d => d -> u) -> Clause -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> Clause -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> Clause -> m Clause Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Clause -> m Clause Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Clause -> m Clause Источник | |
| Ord Clause | |
Определено в Language.Haskell.TH.Syntax | |
| Show Clause | |
| Generic Clause | |
| Ppr Clause | |
| type Rep Clause | |
Определено в Language.Haskell.TH.Syntax type Rep Clause = D1 ('MetaData "Clause" "Language.Haskell.TH.Syntax" "template-haskell" 'False) (C1 ('MetaCons "Clause" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Pat]) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Body) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Dec])))) |
Примеры
| Monad Q | |
| Functor Q | |
| MonadFail Q | |
Определено в Language.Haskell.TH.Syntax | |
| Applicative Q | |
| MonadIO Q | |
Определено в Language.Haskell.TH.Syntax | |
| Quasi Q | |
Определено в Language.Haskell.TH.Syntax | |
Краткое описание методовqNewName :: String -> Q Name Source qReport :: Bool -> String -> Q () Source qRecover :: Q a -> Q a -> Q a Source qLookupName :: Bool -> String -> Q (Maybe Name) Source qReify :: Name -> Q Info Source qReifyFixity :: Name -> Q (Maybe Fixity) Source qReifyType :: Name -> Q Type Source qReifyInstances :: Name -> [Type] -> Q [Dec] Source qReifyRoles :: Name -> Q [Role] Source qReifyAnnotations :: Data a => AnnLookup -> Q [a] Source qReifyModule :: Module -> Q ModuleInfo Source qReifyConStrictness :: Name -> Q [DecidedStrictness] Source qAddDependentFile :: FilePath -> Q () Source qAddTempFile :: String -> Q FilePath Source qAddTopDecls :: [Dec] -> Q () Source qAddForeignFilePath :: ForeignSrcLang -> String -> Q () Source qAddModFinalizer :: Q () -> Q () Source qAddCorePlugin :: String -> Q () Source qGetQ :: Typeable a => Q (Maybe a) Source qPutQ :: Typeable a => a -> Q () Source qIsExtEnabled :: Extension -> Q Bool Source qExtsEnabled :: Q [Extension] Source |
Шаблон в Haskell, представленный в {}
Конструкторы
| LitP Lit | { 5 or 'c' } |
| VarP Name | { x } |
| TupP [Pat] | { (p1,p2) } |
| UnboxedTupP [Pat] | { (# p1,p2 #) } |
| UnboxedSumP Pat SumAlt SumArity | { (#|p|#) } |
| ConP Name [Pat] | data T1 = C1 t1 t2; {C1 p1 p1} = e |
| InfixP Pat Name Pat | foo ({x :+ y}) = e |
| UInfixP Pat Name Pat |
foo ({x :+ y}) = e
|
| ParensP Pat |
{(p)}
|
| TildeP Pat | { ~p } |
| BangP Pat | { !p } |
| AsP Name Pat | { x @ p } |
| WildP | { _ } |
| RecP Name [FieldPat] | f (Pt { pointx = x }) = g x |
| ListP [Pat] | { [1,2,3] } |
| SigP Pat Type | { p :: t } |
| ViewP Exp Pat | { e -> p } |
Экземпляры
| Eq Pat | |
| Data Pat | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Pat -> c Pat Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Pat Источник toConstr :: Pat -> Constr Источник dataTypeOf :: Pat -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Pat) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Pat) Источник gmapT :: (forall b. Data b => b -> b) -> Pat -> Pat Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Pat -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Pat -> r Источник gmapQ :: (forall d. Data d => d -> u) -> Pat -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> Pat -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> Pat -> m Pat Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Pat -> m Pat Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Pat -> m Pat Источник | |
| Ord Pat | |
Конструкторы
| ForallT [TyVarBndr] Cxt Type | forall <vars>. <ctxt> => <type> |
| ForallVisT [TyVarBndr] Type | forall <vars> -> <type> |
| AppT Type Type | T a b |
| AppKindT Type Kind | T @k t |
| SigT Type Kind | t :: k |
| VarT Name | a |
| ConT Name | T |
| PromotedT Name | 'T |
| InfixT Type Name Type | T + T |
| UInfixT Type Name Type |
T + T |
| ParensT Type | (T) |
| TupleT Int | (,), (,,), etc. |
| UnboxedTupleT Int | (#,#), (#,,#), etc. |
| UnboxedSumT SumArity | (#|#), (#||#), etc. |
| ArrowT | -> |
| EqualityT | ~ |
| ListT | [] |
| PromotedTupleT Int | '(), '(,), '(,,), etc. |
| PromotedNilT | '[] |
| PromotedConsT | (':) |
| StarT | * |
| ConstraintT | Constraint |
| LitT TyLit | 0,1,2, etc. |
| WildCardT | _ |
| ImplicitParamT String Type | ?x :: t |
Экземпляры
| Eq Type | |
| Data Type | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Type -> c Type Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Type Источник toConstr :: Type -> Constr Источник dataTypeOf :: Type -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Type) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Type) Источник gmapT :: (forall b. Data b => b -> b) -> Type -> Type Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Type -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Type -> r Источник gmapQ :: (forall d. Data d => d -> u) -> Type -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> Type -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> Type -> m Type Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Type -> m Type Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Type -> m Type Источник | |
| Ord Type | |
Определено в Language.Haskell.TH.Syntax Методыcompare :: Тип -> Тип -> Порядок Исходный код (<) :: Тип -> Тип -> Булево Исходный код (<=) :: Тип -> Тип -> Булево Исходный код (>) :: Тип -> Тип -> Булево Исходный код (>=) :: Тип -> Тип -> Булево Исходный код max :: Тип -> Тип -> Тип Исходный код min :: Тип -> Тип -> Тип Исходный код | |
| Show Тип | |
Определено в Language.Haskell.TH.Syntax МетодыshowsPrec :: Целое -> Тип -> ShowS Исходный код show :: Тип -> Строка Исходный код showList :: [Тип] -> ShowS Исходный код | |
| Generic Тип | |
Определено в Language.Haskell.TH.Syntax Связанные типыtype Rep Тип :: Тип -> Тип Исходный код | |
| Ppr Тип | |
Определено в Language.Haskell.TH.Ppr | |
| type Rep Тип | |
Определено в Language.Haskell.TH.Syntax | |
False) (U1 :: Тип -> Тип) :+: C1 ('MetaCons "ImplicitParamT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Может быть Символ) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Строка) :*: S1 ('MetaSel ('Nothing :: Может быть Символ) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Тип))))))) |
Конструкторы
| FunD Name [Clause] | { f p1 p2 = b where decs } |
| ValD Pat Body [Dec] | { p = b where decs } |
| DataD Cxt Name [TyVarBndr] (Maybe Kind) [Con] [DerivClause] | { data Cxt x => T x = A x | B (T x)
deriving (Z,W)
deriving stock Eq } |
| NewtypeD Cxt Name [TyVarBndr] (Maybe Kind) Con [DerivClause] | { newtype Cxt x => T x = A (B x)
deriving (Z,W Q)
deriving stock Eq } |
| TySynD Name [TyVarBndr] Type | { type T x = (x,x) } |
| ClassD Cxt Name [TyVarBndr] [FunDep] [Dec] | { class Eq a => Ord a where ds } |
| InstanceD (Maybe Overlap) Cxt Type [Dec] | { instance {-# OVERLAPS #-}
Show w => Show [w] where ds } |
| SigD Name Type | { length :: [a] -> Int } |
| KiSigD Name Kind | { type TypeRep :: k -> Type } |
| ForeignD Foreign | { foreign import ... }
{ foreign export ... } |
| InfixD Fixity Name | { infix 3 foo } |
| PragmaD Pragma | { {-# INLINE [1] foo #-} } |
| DataFamilyD Name [TyVarBndr] (Maybe Kind) | { data family T a b c :: * } |
| DataInstD Cxt (Maybe [TyVarBndr]) Type (Maybe Kind) [Con] [DerivClause] | { data instance Cxt x => T [x]
= A x | B (T x)
deriving (Z,W)
deriving stock Eq } |
| NewtypeInstD Cxt (Maybe [TyVarBndr]) Type (Maybe Kind) Con [DerivClause] | { newtype instance Cxt x => T [x]
= A (B x)
deriving (Z,W)
deriving stock Eq } |
| TySynInstD TySynEqn | { type instance ... } |
| OpenTypeFamilyD TypeFamilyHead | { type family T a b c = (r :: *) | r -> a b } |
| ClosedTypeFamilyD TypeFamilyHead [TySynEqn] | { type family F a b = (r :: *) | r -> a where ... } |
| RoleAnnotD Name [Role] | { type role T nominal representational } |
| StandaloneDerivD (Maybe DerivStrategy) Cxt Type | { deriving stock instance Ord a => Ord (Foo a) } |
| DefaultSigD Name Type | { default size :: Data a => a -> Int } |
| PatSynD Name PatSynArgs PatSynDir Pat |
также, помимо префиксных синонимов шаблонов, поддерживаются инфиксные и синонимы шаблонов записи. См. |
| PatSynSigD Name PatSynType | Подпись типа синонима шаблона. |
| ImplicitParamBindD String Exp |
{ ?x = expr }
Объявление привязки неявных параметров. Может использоваться только в let и where-разделах, состоящих целиком из неявных привязок. |
Экземпляры
| Eq Dec | |
| Data Dec | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Dec -> c Dec Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Dec Источник toConstr :: Dec -> Constr Источник dataTypeOf :: Dec -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Dec) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Dec) Источник gmapT :: (forall b. Data b => b -> b) -> Dec -> Dec Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Dec -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Dec -> r Источник gmapQ :: (forall d. Data d => d -> u) -> Dec -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> Dec -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> Dec -> m Dec Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Dec -> m Dec Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Dec -> m Dec Источник | |
| Ord Dec | |
Определено в Language.Haskell.TH.Syntax Методыcompare :: Dec -> Dec -> Ordering Исходный код (<) :: Dec -> Dec -> Bool Исходный код (<=) :: Dec -> Dec -> Bool Исходный код (>) :: Dec -> Dec -> Bool Исходный код (>=) :: Dec -> Dec -> Bool Исходный код max :: Dec -> Dec -> Dec Исходный код min :: Dec -> Dec -> Dec Исходный код | |
| Show Dec | |
Определено в Language.Haskell.TH.Syntax МетодыshowsPrec :: Int -> Dec -> ShowS Исходный код show :: Dec -> String Исходный код showList :: [Dec] -> ShowS Исходный код | |
| Generic Dec | |
Определено в Language.Haskell.TH.Syntax Связанные типыtype Rep Dec :: Type -> Type Исходный код | |
| Ppr Dec | |
Определено в Language.Haskell.TH.Ppr | |
| type Rep Dec | |
Определено в Language.Haskell.TH.Syntax | |
NoSourceStrictness 'DecidedLazy) (Rec0 PatSynArgs)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PatSynDir) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat))) :+: (C1 ('MetaCons "PatSynSigD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PatSynType)) :+: C1 ('MetaCons "ImplicitParamBindD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Строка) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Выражение))))))) |
type FieldExp = (Имя, Выражение) Источник
type FieldPat = (Имя, Шаблон) Источник
Абстрактный тип, представляющий имена в дереве синтаксического анализа.
NameИмена могут быть сконструированы несколькими способами, которые имеют разные гарантии захвата имён (см. Language.Haskell.TH.Syntax для объяснения захвата имён):
- Встроенный синтаксис
'fи''Tмогут использоваться для построения имён. Выражение'fдаётName, которое ссылается на значениеf, в настоящее время в области видимости, а''TдаётName, которое ссылается на типT, в настоящее время в области видимости. Эти имена никогда не могут быть захвачены. lookupValueNameиlookupTypeNameаналогичны'fи''Tсоответственно, ноNameищутся в точке, где выполняется текущий сплейс. Эти имена никогда не могут быть захвачены.newNameмонадически генерирует новое имя, которое никогда не может быть захвачено.mkNameгенерирует имя, которое может быть захвачено.
Имена, созданные с помощью newName и mkName, могут быть использованы в связываниях (например, let x = ... или x -> ...), но имена, созданные с помощью lookupValueName, lookupTypeName, 'f, ''T, не могут.
Экземпляры
| Eq Name | |
| Data Name | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Name -> c Name Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Name Source toConstr :: Name -> Constr Source dataTypeOf :: Name -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Name) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Name) Source gmapT :: (forall b. Data b => b -> b) -> Name -> Name Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Name -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Name -> r Source gmapQ :: (forall d. Data d => d -> u) -> Name -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Name -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Name -> m Name Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Name -> m Name Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Name -> m Name Source | |
| Ord Name | |
Экземпляры
| Eq FunDep | |
| Data FunDep | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FunDep -> c FunDep Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c FunDep Source toConstr :: FunDep -> Constr Source dataTypeOf :: FunDep -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c FunDep) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c FunDep) Source gmapT :: (forall b. Data b => b -> b) -> FunDep -> FunDep Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FunDep -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FunDep -> r Source gmapQ :: (forall d. Data d => d -> u) -> FunDep -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> FunDep -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> FunDep -> m FunDep Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FunDep -> m FunDep Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FunDep -> m FunDep Source | |
| Ord FunDep | |
С момента появления ConstraintKinds, ограничения фактически являются просто типами. Ограничения равенства используют конструктор EqualityT. Ограничения также могут быть кортежами других ограничений.
newtype TExp (a :: TYPE (r :: RuntimeRep)) Source
Представляет выражение, имеющее тип a. Построенное поверх Exp, типизированные выражения позволяют выполнять безопасную вставку типов следующим образом:
- типизированные цитаты, записанные как
[|| ... ||]где...— это выражение; если это выражение имеет типa, то цитата имеет типQ (TExp a) - типизированные вставки внутри типизированных цитат, записанные как
$$(...)где...— это произвольное выражение типаQ (TExp a)
Традиционные цитаты и вставки выражений позволяют нам строить выражения с неправильным типом:
>>> fmap ppr $ runQ [| True == $( [| "foo" |] ) |]
GHC.Types.True GHC.Classes.== "foo"
>>> GHC.Types.True GHC.Classes.== "foo"
<interactive> error:
• Couldn't match expected type ‘Bool’ with actual type ‘[Char]’
• In the second argument of ‘(==)’, namely ‘"foo"’
In the expression: True == "foo"
In an equation for ‘it’: it = True == "foo"
С типизированными выражениями ошибка типа возникает при создании выражения Template Haskell:
>>> fmap ppr $ runQ [|| True == $$( [|| "foo" ||] ) ||]
<interactive> error:
• Couldn't match type ‘[Char]’ with ‘Bool’
Expected type: Q (TExp Bool)
Actual type: Q (TExp [Char])
• In the Template Haskell quotation [|| "foo" ||]
In the expression: [|| "foo" ||]
In the Template Haskell splice $$([|| "foo" ||])
data InjectivityAnn Source
Аннотация инъективности
Конструкторы
| InjectivityAnn Name [Name] |
Экземпляры
Определено в Language.Haskell.TH.Syntax type Rep InjectivityAnn = D1 ('MetaData "InjectivityAnn" "Language.Haskell.TH.Syntax" "template-haskell" 'False) (C1 ('MetaCons "InjectivityAnn" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name]))) |
Разновидности разрешенного перекрытия экземпляров.
Конструкторы
| Overlappable | Может быть перекрыто более специфическими экземплярами |
| Overlapping | Может перекрывать более общий экземпляр |
| Overlaps | Оба |
| Incoherent | Оба |
Экземпляры
| Eq Overlap | |
| Data Overlap | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Overlap -> c Overlap Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Overlap Источник toConstr :: Overlap -> Constr Источник dataTypeOf :: Overlap -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Overlap) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Overlap) Источник gmapT :: (forall b. Data b => b -> b) -> Overlap -> Overlap Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Overlap -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Overlap -> r Источник gmapQ :: (forall d. Data d => d -> u) -> Overlap -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> Overlap -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> Overlap -> m Overlap Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Overlap -> m Overlap Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Overlap -> m Overlap Источник | |
| Ord Overlap | |
Определено в Language.Haskell.TH.Syntax | |
| Show Overlap | |
| Generic Overlap | |
| type Rep Overlap | |
Определено в Language.Haskell.TH.Syntax type Rep Overlap = D1 ('MetaData "Overlap" "Language.Haskell.TH.Syntax" "template-haskell" 'False) ((C1 ('MetaCons "Overlappable" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Overlapping" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Overlaps" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Incoherent" 'PrefixI 'False) (U1 :: Type -> Type))) | |
Для избежания дублирования между типами и видами, они определяются как одинаковые. Естественно, у вас никогда не будет типа StarT, и у вас никогда не будет вида SigT, но многие другие конструкторы разделяются. Обратите внимание, что вид Bool обозначается ConT, а не PromotedT. Аналогично, виды кортежей создаются с помощью TupleT, а не PromotedTupleT.
Цель аннотации для reifyAnnotations
Конструкторы
| AnnLookupModule Module | |
| AnnLookupName Name |
Экземпляры
| Eq AnnLookup | |
| Data AnnLookup | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> AnnLookup -> c AnnLookup Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c AnnLookup Source toConstr :: AnnLookup -> Constr Source dataTypeOf :: AnnLookup -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c AnnLookup) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AnnLookup) Source gmapT :: (forall b. Data b => b -> b) -> AnnLookup -> AnnLookup Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> AnnLookup -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> AnnLookup -> r Source gmapQ :: (forall d. Data d => d -> u) -> AnnLookup -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> AnnLookup -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> AnnLookup -> m AnnLookup Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> AnnLookup -> m AnnLookup Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> AnnLookup -> m AnnLookup Source | |
| Ord AnnLookup | |
Определено в Language.Haskell.TH.Syntax Методыcompare :: AnnLookup -> AnnLookup -> Ordering Источник (<) :: AnnLookup -> AnnLookup -> Bool Источник (<=) :: AnnLookup -> AnnLookup -> Bool Источник (>) :: AnnLookup -> AnnLookup -> Bool Источник (>=) :: AnnLookup -> AnnLookup -> Bool Источник | |
| Show AnnLookup | |
| Generic AnnLookup | |
| type Rep AnnLookup | |
Определено в Language.Haskell.TH.Syntax type Rep AnnLookup = D1 ('MetaData "AnnLookup" "Language.Haskell.TH.Syntax" "template-haskell" 'False) (C1 ('MetaCons "AnnLookupModule" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Module)) :+: C1 ('MetaCons "AnnLookupName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))) | |
Аннотации роли
Конструкторы
| NominalR | nominal |
| RepresentationalR | representational |
| PhantomR | phantom |
| InferR | _ |
Экземпляры
| Eq Role | |
| Data Role | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Role -> c Role Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Role Source toConstr :: Role -> Constr Source dataTypeOf :: Role -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Role) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Role) Source gmapT :: (forall b. Data b => b -> b) -> Role -> Role Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Role -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Role -> r Source gmapQ :: (forall d. Data d => d -> u) -> Role -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Role -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Role -> m Role Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Role -> m Role Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Role -> m Role Source | |
| Ord Role | |
Экземпляры
| Eq TyLit | |
| Data TyLit | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TyLit -> c TyLit Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c TyLit Source toConstr :: TyLit -> Constr Source dataTypeOf :: TyLit -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c TyLit) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c TyLit) Source gmapT :: (forall b. Data b => b -> b) -> TyLit -> TyLit Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TyLit -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TyLit -> r Source gmapQ :: (forall d. Data d => d -> u) -> TyLit -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> TyLit -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> TyLit -> m TyLit Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TyLit -> m TyLit Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TyLit -> m TyLit Source | |
| Ord TyLit | |
Определено в Language.Haskell.TH.Syntax Методыcompare :: TyLit -> TyLit -> Ordering Исходный код (<) :: TyLit -> TyLit -> Bool Исходный код (<=) :: TyLit -> TyLit -> Bool Исходный код (>) :: TyLit -> TyLit -> Bool Исходный код (>=) :: TyLit -> TyLit -> Bool Исходный код max :: TyLit -> TyLit -> TyLit Исходный код min :: TyLit -> TyLit -> TyLit Исходный код | |
| Show TyLit | |
Определено в Language.Haskell.TH.Syntax МетодыshowsPrec :: Int -> TyLit -> ShowS Исходный код show :: TyLit -> String Исходный код showList :: [TyLit] -> ShowS Исходный код | |
| Generic TyLit | |
Определено в Language.Haskell.TH.Syntax Связанные типыtype Rep TyLit :: Тип -> Тип Исходный код | |
| Ppr TyLit | |
Определено в Language.Haskell.TH.Ppr | |
| type Rep TyLit | |
Определено в Language.Haskell.TH.Syntax type Rep TyLit = D1 ('MetaData "TyLit" "Language.Haskell.TH.Syntax" "template-haskell" 'False) (C1 ('MetaCons "NumTyLit" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Integer)) :+: C1 ('MetaCons "StrTyLit" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String))) |
data FamilyResultSig Source
Тип-семейство результирующая подпись
Экземпляры
Определено в Language.Haskell.TH.Syntax type Rep FamilyResultSig = D1 ('MetaData "FamilyResultSig" "Language.Haskell.TH.Syntax" "template-haskell" 'False) (C1 ('MetaCons "NoSig" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "KindSig" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Kind)) :+: C1 ('MetaCons "TyVarSig" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TyVarBndr)))) |
Экземпляры
| Eq TyVarBndr | |
| Data TyVarBndr | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TyVarBndr -> c TyVarBndr Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c TyVarBndr Источник toConstr :: TyVarBndr -> Constr Источник dataTypeOf :: TyVarBndr -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c TyVarBndr) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c TyVarBndr) Источник gmapT :: (forall b. Data b => b -> b) -> TyVarBndr -> TyVarBndr Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TyVarBndr -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TyVarBndr -> r Источник gmapQ :: (forall d. Data d => d -> u) -> TyVarBndr -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> TyVarBndr -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> TyVarBndr -> m TyVarBndr Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TyVarBndr -> m TyVarBndr Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TyVarBndr -> m TyVarBndr Источник | |
| Ord TyVarBndr | |
Определено в Language.Haskell.TH.Syntax Методыcompare :: TyVarBndr -> TyVarBndr -> Ordering Источник (<) :: TyVarBndr -> TyVarBndr -> Bool Источник (<=) :: TyVarBndr -> TyVarBndr -> Bool Источник (>) :: TyVarBndr -> TyVarBndr -> Bool Источник (>=) :: TyVarBndr -> TyVarBndr -> Bool Источник | |
| Show TyVarBndr | |
| Generic TyVarBndr | |
| Ppr TyVarBndr | |
| type Rep TyVarBndr | |
Определено в Language.Haskell.TH.Syntax type Rep TyVarBndr = D1 ('MetaData "TyVarBndr" "Language.Haskell.TH.Syntax" "template-haskell" 'False) (C1 ('MetaCons "PlainTV" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: C1 ('MetaCons "KindedTV" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Kind))) |
data PatSynArgs Source
Тип аргумента псевдонима шаблона.
Конструкторы
| PrefixPatSyn [Name] | pattern P {x y z} = p |
| InfixPatSyn Name Name | pattern {x P y} = p |
| RecordPatSyn [Name] | pattern P { {x,y,z} } = p |
Экземпляры
| Eq PatSynArgs | |
Определено в Language.Haskell.TH.Syntax Методы(==) :: PatSynArgs -> PatSynArgs -> Bool Источник (/=) :: PatSynArgs -> PatSynArgs -> Bool Источник | |
| Data PatSynArgs | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> PatSynArgs -> c PatSynArgs Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c PatSynArgs Источник toConstr :: PatSynArgs -> Constr Источник dataTypeOf :: PatSynArgs -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c PatSynArgs) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PatSynArgs) Источник gmapT :: (forall b. Data b => b -> b) -> PatSynArgs -> PatSynArgs Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> PatSynArgs -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> PatSynArgs -> r Источник gmapQ :: (forall d. Data d => d -> u) -> PatSynArgs -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> PatSynArgs -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> PatSynArgs -> m PatSynArgs Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> PatSynArgs -> m PatSynArgs Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> PatSynArgs -> m PatSynArgs Источник | |
| Ord PatSynArgs | |
Определено в Language.Haskell.TH.Syntax Методыcompare :: PatSynArgs -> PatSynArgs -> Ordering Исходный код (<) :: PatSynArgs -> PatSynArgs -> Bool Исходный код (<=) :: PatSynArgs -> PatSynArgs -> Bool Исходный код (>) :: PatSynArgs -> PatSynArgs -> Bool Исходный код (>=) :: PatSynArgs -> PatSynArgs -> Bool Исходный код max :: PatSynArgs -> PatSynArgs -> PatSynArgs Исходный код min :: PatSynArgs -> PatSynArgs -> PatSynArgs Исходный код | |
| Show PatSynArgs | |
Определено в Language.Haskell.TH.Syntax МетодыshowsPrec :: Int -> PatSynArgs -> ShowS Исходный код show :: PatSynArgs -> String Исходный код showList :: [PatSynArgs] -> ShowS Исходный код | |
| Generic PatSynArgs | |
Определено в Language.Haskell.TH.Syntax Связанные типыtype Rep PatSynArgs :: Type -> Type Исходный код Методыfrom :: PatSynArgs -> Rep PatSynArgs x Исходный код to :: Rep PatSynArgs x -> PatSynArgs Исходный код | |
| Ppr PatSynArgs | |
Определено в Language.Haskell.TH.Ppr | |
| type Rep PatSynArgs | |
Определено в Language.Haskell.TH.Syntax type Rep PatSynArgs = D1 ('MetaData "PatSynArgs" "Language.Haskell.TH.Syntax" "template-haskell" 'False) (C1 ('MetaCons "PrefixPatSyn" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name])) :+: (C1 ('MetaCons "InfixPatSyn" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: C1 ('MetaCons "RecordPatSyn" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name])))) |
Направление синонима шаблона.
Экземпляры
| Eq PatSynDir | |
| Data PatSynDir | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> PatSynDir -> c PatSynDir Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c PatSynDir Источник toConstr :: PatSynDir -> Constr Источник dataTypeOf :: PatSynDir -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c PatSynDir) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PatSynDir) Источник gmapT :: (forall b. Data b => b -> b) -> PatSynDir -> PatSynDir Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> PatSynDir -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> PatSynDir -> r Источник gmapQ :: (forall d. Data d => d -> u) -> PatSynDir -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> PatSynDir -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> PatSynDir -> m PatSynDir Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> PatSynDir -> m PatSynDir Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> PatSynDir -> m PatSynDir Источник | |
| Ord PatSynDir | |
Определено в Language.Haskell.TH.Syntax Методыcompare :: PatSynDir -> PatSynDir -> Ordering Исходный код (<) :: PatSynDir -> PatSynDir -> Bool Исходный код (<=) :: PatSynDir -> PatSynDir -> Bool Исходный код (>) :: PatSynDir -> PatSynDir -> Bool Исходный код (>=) :: PatSynDir -> PatSynDir -> Bool Исходный код max :: PatSynDir -> PatSynDir -> PatSynDir Исходный код min :: PatSynDir -> PatSynDir -> PatSynDir Исходный код | |
| Show PatSynDir | |
Определено в Language.Haskell.TH.Syntax МетодыshowsPrec :: Int -> PatSynDir -> ShowS Исходный код show :: PatSynDir -> String Исходный код showList :: [PatSynDir] -> ShowS Исходный код | |
| Generic PatSynDir | |
Определено в Language.Haskell.TH.Syntax Связанные типыtype Rep PatSynDir :: Type -> Type Исходный код Методыfrom :: PatSynDir -> Rep PatSynDir x Исходный код to :: Rep PatSynDir x -> PatSynDir Исходный код | |
| Ppr PatSynDir | |
Определено в Language.Haskell.TH.Ppr | |
| type Rep PatSynDir | |
Определено в Language.Haskell.TH.Syntax type Rep PatSynDir = D1 ('MetaData "PatSynDir" "Language.Haskell.TH.Syntax" "template-haskell" 'False) (C1 ('MetaCons "Unidir" 'PrefixI 'False) (U1 :: Тип -> Тип) :+: (C1 ('MetaCons "ImplBidir" 'PrefixI 'False) (U1 :: Тип -> Тип) :+: C1 ('MetaCons "ExplBidir" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Символ) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Предложение])))) |
type ТипПеременнойССтрогостью = ТипПеременнойСФлагом Исходный код
Начиная с template-haskell-2.11.0.0, VarStrictType было заменено на VarBangType.
type ТипСоСтрогостью = ТипСФлагом Исходный код
Начиная с template-haskell-2.11.0.0, StrictType было заменено на BangType.
type Строгость = Флаг Исходный код
Начиная с template-haskell-2.11.0.0, Strict было заменено на Bang.
type ТипПеременнойСФлагом = (Имя, Флаг, Тип) Исходный код
type ТипСФлагом = (Флаг, Тип) Исходный код
data Флаг Исходный код
Конструкторы
| Флаг Развёрнутость Строгость | C { {-# UNPACK #-} !}a |
Экземпляры
| Eq Bang | |
| Data Bang | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Bang -> c Bang Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Bang Источник toConstr :: Bang -> Constr Источник dataTypeOf :: Bang -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Bang) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Bang) Источник gmapT :: (forall b. Data b => b -> b) -> Bang -> Bang Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Bang -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Bang -> r Источник gmapQ :: (forall d. Data d => d -> u) -> Bang -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> Bang -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> Bang -> m Bang Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Bang -> m Bang Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Bang -> m Bang Источник | |
| Ord Bang | |
data Con Исходный код
Один конструктор данных.
Конструкторы для Con можно грубо разделить на две категории: те, для конструкторов с «обычным» синтаксисом (NormalC, RecC, и InfixC), и те, для конструкторов с синтаксисом GADT (GadtC и RecGadtC). Конструктор ForallC, который квантифицирует дополнительные переменные типа и контексты классов, может окружать любой из этих типов конструкторов. Однако, переменные типа, которые он квантифицирует, отличаются в зависимости от используемого синтаксиса конструктора:
- Если
ForallCокружает конструктор с обычным синтаксисом, тоForallCбудет квантифицировать только экзистенциальные переменные типа. Например:
data Foo a = forall b. MkFoo a b
В MkFoo, ForallC будет квантифицировать b, но не a.
- Если
ForallCокружает конструктор с синтаксисом GADT, тоForallCбудет квантифицировать все переменные типа, используемые в конструкторе. Например:
data Bar a b where
MkBar :: (a ~ b) => c -> MkBar a b
В MkBar, ForallC будет квантифицировать a, b, и c.
Экземпляры
| Eq Con | |
| Data Con | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Con -> c Con Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Con Источник toConstr :: Con -> Constr Источник dataTypeOf :: Con -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Con) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Con) Источник gmapT :: (forall b. Data b => b -> b) -> Con -> Con Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Con -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Con -> r Источник gmapQ :: (forall d. Data d => d -> u) -> Con -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> Con -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> Con -> m Con Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Con -> m Con Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Con -> m Con Источник | |
| Ord Con | |
Определено в Language.Haskell.TH.Syntax Методыcompare :: Con -> Con -> Ordering Исходный код (<) :: Con -> Con -> Bool Исходный код (<=) :: Con -> Con -> Bool Исходный код (>) :: Con -> Con -> Bool Исходный код (>=) :: Con -> Con -> Bool Исходный код max :: Con -> Con -> Con Исходный код min :: Con -> Con -> Con Исходный код | |
| Show Con | |
Определено в Language.Haskell.TH.Syntax МетодыshowsPrec :: Int -> Con -> ShowS Исходный код show :: Con -> String Исходный код showList :: [Con] -> ShowS Исходный код | |
| Generic Con | |
Определено в Language.Haskell.TH.Syntax Связанные типыtype Rep Con :: Тип -> Тип Исходный код | |
| Ppr Con | |
Определено в Language.Haskell.TH.Ppr | |
| type Rep Con | |
Определено в Language.Haskell.TH.Syntax | |
('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name]) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [BangType]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :+: C1 ('MetaCons "RecGadtC" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name]) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [VarBangType]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))))) |
data DecidedStrictness Source
В отличие от SourceStrictness и SourceUnpackedness, DecidedStrictness относится к строгости, выбранной компилятором для поля конструктора данных, которая может отличаться от того, что написано в исходном коде. Дополнительную информацию см. в reifyConStrictness.
Конструкторы
| DecidedLazy | |
| DecidedStrict | |
| DecidedUnpack |
Экземпляры
Определено в Language.Haskell.TH.Syntax type Rep DecidedStrictness = D1 ('MetaData "DecidedStrictness" "Language.Haskell.TH.Syntax" "template-haskell" 'False) (C1 ('MetaCons "DecidedLazy" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "DecidedStrict" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DecidedUnpack" 'PrefixI 'False) (U1 :: Type -> Type))) |
data SourceStrictness Source
Конструкторы
| NoSourceStrictness | C a |
| SourceLazy | C {~}a |
| SourceStrict | C {!}a |
Экземпляры
Определено в Language.Haskell.TH.Syntax type Rep SourceStrictness = D1 ('MetaData "SourceStrictness" "Language.Haskell.TH.Syntax" "template-haskell" 'False) (C1 ('MetaCons "NoSourceStrictness" 'PrefixI 'False) (U1 :: Тип -> Тип) :+: (C1 ('MetaCons "SourceLazy" 'PrefixI 'False) (U1 :: Тип -> Тип) :+: C1 ('MetaCons "SourceStrict" 'PrefixI 'False) (U1 :: Тип -> Тип))) |
data SourceUnpackedness Source
Конструкторы
| NoSourceUnpackedness | C a |
| SourceNoUnpack | C { {-# NOUNPACK #-} } a |
| SourceUnpack | C { {-# UNPACK #-} } a |
Экземпляры
Определено в Language.Haskell.TH.Syntax type Rep SourceUnpackedness = D1 ('MetaData "SourceUnpackedness" "Language.Haskell.TH.Syntax" "template-haskell" 'False) (C1 ('MetaCons "NoSourceUnpackedness" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "SourceNoUnpack" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SourceUnpack" 'PrefixI 'False) (U1 :: Type -> Type))) |
Аргументы
| = [Pred] | (Eq a, Ord b) |
Конструкторы
| ModuleAnnotation | |
| TypeAnnotation Name | |
| ValueAnnotation Name |
Экземпляры
| Eq AnnTarget | |
| Data AnnTarget | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> AnnTarget -> c AnnTarget Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c AnnTarget Источник toConstr :: AnnTarget -> Constr Источник dataTypeOf :: AnnTarget -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c AnnTarget) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AnnTarget) Источник gmapT :: (forall b. Data b => b -> b) -> AnnTarget -> AnnTarget Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> AnnTarget -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> AnnTarget -> r Источник gmapQ :: (forall d. Data d => d -> u) -> AnnTarget -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> AnnTarget -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> AnnTarget -> m AnnTarget Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> AnnTarget -> m AnnTarget Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> AnnTarget -> m AnnTarget Источник | |
| Ord AnnTarget | |
data RuleBndr Исходный код
Конструкторы
| RuleVar Name | |
| TypedRuleVar Name Type |
Экземпляры
| Eq RuleBndr | |
| Data RuleBndr | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> RuleBndr -> c RuleBndr Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c RuleBndr Source toConstr :: RuleBndr -> Constr Source dataTypeOf :: RuleBndr -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c RuleBndr) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c RuleBndr) Source gmapT :: (forall b. Data b => b -> b) -> RuleBndr -> RuleBndr Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RuleBndr -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RuleBndr -> r Source gmapQ :: (forall d. Data d => d -> u) -> RuleBndr -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> RuleBndr -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> RuleBndr -> m RuleBndr Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RuleBndr -> m RuleBndr Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RuleBndr -> m RuleBndr Source | |
| Ord RuleBndr | |
Определено в Language.Haskell.TH.Syntax Методыcompare :: RuleBndr -> RuleBndr -> Ordering Исходный код (<) :: RuleBndr -> RuleBndr -> Bool Исходный код (<=) :: RuleBndr -> RuleBndr -> Bool Исходный код (>) :: RuleBndr -> RuleBndr -> Bool Исходный код (>=) :: RuleBndr -> RuleBndr -> Bool Исходный код max :: RuleBndr -> RuleBndr -> RuleBndr Исходный код min :: RuleBndr -> RuleBndr -> RuleBndr Исходный код | |
| Show RuleBndr | |
Определено в Language.Haskell.TH.Syntax МетодыshowsPrec :: Int -> RuleBndr -> ShowS Исходный код show :: RuleBndr -> String Исходный код showList :: [RuleBndr] -> ShowS Исходный код | |
| Generic RuleBndr | |
Определено в Language.Haskell.TH.Syntax Связанные типыtype Rep RuleBndr :: Type -> Type Исходный код Методыfrom :: RuleBndr -> Rep RuleBndr x Исходный код to :: Rep RuleBndr x -> RuleBndr Исходный код | |
| Ppr RuleBndr | |
Определено в Language.Haskell.TH.Ppr | |
| type Rep RuleBndr | |
Определено в Language.Haskell.TH.Syntax type Rep RuleBndr = D1 ('MetaData "RuleBndr" "Language.Haskell.TH.Syntax" "template-haskell" 'False) (C1 ('MetaCons "RuleVar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: C1 ('MetaCons "TypedRuleVar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) |
Конструкторы
| ВсеЭтапы | |
| ОтЭтапа Целое | |
| ПередЭтапом Целое |
Экземпляры
| Eq Phases | |
| Data Phases | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Phases -> c Phases Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Phases Источник toConstr :: Phases -> Constr Источник dataTypeOf :: Phases -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Phases) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Phases) Источник gmapT :: (forall b. Data b => b -> b) -> Phases -> Phases Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Phases -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Phases -> r Источник gmapQ :: (forall d. Data d => d -> u) -> Phases -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> Phases -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> Phases -> m Phases Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Phases -> m Phases Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Phases -> m Phases Источник | |
| Ord Phases | |
Определено в Language.Haskell.TH.Syntax type Rep Phases = D1 ('MetaData "Phases" "Language.Haskell.TH.Syntax" "template-haskell" 'False) (C1 ('MetaCons "AllPhases" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "FromPhase" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)) :+: C1 ('MetaCons "BeforePhase" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)))) |
Экземпляры
| Eq RuleMatch | |
| Data RuleMatch | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> RuleMatch -> c RuleMatch Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c RuleMatch Источник toConstr :: RuleMatch -> Constr Источник dataTypeOf :: RuleMatch -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c RuleMatch) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c RuleMatch) Источник gmapT :: (forall b. Data b => b -> b) -> RuleMatch -> RuleMatch Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RuleMatch -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RuleMatch -> r Источник gmapQ :: (forall d. Data d => d -> u) -> RuleMatch -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> RuleMatch -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> RuleMatch -> m RuleMatch Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RuleMatch -> m RuleMatch Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RuleMatch -> m RuleMatch Источник | |
| Ord RuleMatch | |
Определено в Language.Haskell.TH.Syntax Методыcompare :: RuleMatch -> RuleMatch -> Ordering Исходный код (<) :: RuleMatch -> RuleMatch -> Bool Исходный код (<=) :: RuleMatch -> RuleMatch -> Bool Исходный код (>) :: RuleMatch -> RuleMatch -> Bool Исходный код (>=) :: RuleMatch -> RuleMatch -> Bool Исходный код max :: RuleMatch -> RuleMatch -> RuleMatch Исходный код min :: RuleMatch -> RuleMatch -> RuleMatch Исходный код | |
| Show RuleMatch | |
Определено в Language.Haskell.TH.Syntax МетодыshowsPrec :: Int -> RuleMatch -> ShowS Исходный код show :: RuleMatch -> String Исходный код showList :: [RuleMatch] -> ShowS Исходный код | |
| Generic RuleMatch | |
Определено в Language.Haskell.TH.Syntax Связанные типыtype Rep RuleMatch :: Тип -> Тип Исходный код Методыfrom :: RuleMatch -> Rep RuleMatch x Исходный код to :: Rep RuleMatch x -> RuleMatch Исходный код | |
| Ppr RuleMatch | |
Определено в Language.Haskell.TH.Ppr | |
| type Rep RuleMatch | |
data Inline Исходный код
Экземпляры
| Eq Inline | |
| Data Inline | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Inline -> c Inline Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Inline Источник toConstr :: Inline -> Constr Источник dataTypeOf :: Inline -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Inline) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Inline) Источник gmapT :: (forall b. Data b => b -> b) -> Inline -> Inline Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Inline -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Inline -> r Источник gmapQ :: (forall d. Data d => d -> u) -> Inline -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> Inline -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> Inline -> m Inline Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Inline -> m Inline Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Inline -> m Inline Источник | |
| Ord Inline | |
Определено в Language.Haskell.TH.Syntax Методыcompare :: Inline -> Inline -> Ordering Исходный код (<) :: Inline -> Inline -> Bool Исходный код (<=) :: Inline -> Inline -> Bool Исходный код (>) :: Inline -> Inline -> Bool Исходный код (>=) :: Inline -> Inline -> Bool Исходный код max :: Inline -> Inline -> Inline Исходный код min :: Inline -> Inline -> Inline Исходный код | |
| Show Inline | |
Определено в Language.Haskell.TH.Syntax МетодыshowsPrec :: Int -> Inline -> ShowS Исходный код show :: Inline -> String Исходный код showList :: [Inline] -> ShowS Исходный код | |
| Generic Inline | |
Определено в Language.Haskell.TH.Syntax Связанные типыtype Rep Inline :: Type -> Type Исходный код | |
| Ppr Inline | |
Определено в Language.Haskell.TH.Ppr | |
| type Rep Inline | |
Определено в Language.Haskell.TH.Syntax | |
data Pragma Исходный код
Экземпляры
| Eq Pragma | |
| Data Pragma | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Pragma -> c Pragma Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Pragma Source toConstr :: Pragma -> Constr Source dataTypeOf :: Pragma -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Pragma) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Pragma) Source gmapT :: (forall b. Data b => b -> b) -> Pragma -> Pragma Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Pragma -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Pragma -> r Source gmapQ :: (forall d. Data d => d -> u) -> Pragma -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Pragma -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Pragma -> m Pragma Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Pragma -> m Pragma Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Pragma -> m Pragma Source | |
| Ord Pragma | |
Определено в Language.Haskell.TH.Syntax | |
| Show Pragma | |
| Generic Pragma | |
| Ppr Pragma | |
| type Rep Pragma | |
Определено в Language.Haskell.TH.Syntax | |
data Безопасность Источник
Конструкторы
| Unsafe | |
| Safe | |
| Interruptible |
Экземпляры
| Eq Safety | |
| Data Safety | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Safety -> c Safety Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Safety Source toConstr :: Safety -> Constr Source dataTypeOf :: Safety -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Safety) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Safety) Source gmapT :: (forall b. Data b => b -> b) -> Safety -> Safety Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Safety -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Safety -> r Source gmapQ :: (forall d. Data d => d -> u) -> Safety -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Safety -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Safety -> m Safety Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Safety -> m Safety Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Safety -> m Safety Source | |
| Ord Safety | |
Определено в Language.Haskell.TH.Syntax Методыcompare :: Safety -> Safety -> Ordering Исходный код (<) :: Safety -> Safety -> Bool Исходный код (<=) :: Safety -> Safety -> Bool Исходный код (>) :: Safety -> Safety -> Bool Исходный код (>=) :: Safety -> Safety -> Bool Исходный код max :: Safety -> Safety -> Safety Исходный код min :: Safety -> Safety -> Safety Исходный код | |
| Show Safety | |
Определено в Language.Haskell.TH.Syntax МетодыshowsPrec :: Int -> Safety -> ShowS Исходный код show :: Safety -> String Исходный код showList :: [Safety] -> ShowS Исходный код | |
| Generic Safety | |
Определено в Language.Haskell.TH.Syntax Связанные типыtype Rep Safety :: Type -> Type Исходный код | |
| type Rep Safety | |
Определено в Language.Haskell.TH.Syntax | |
data Callconv Исходный код
Конструкторы
| CCall | |
| StdCall | |
| CApi | |
| Prim | |
| JavaScript |
Экземпляры
| Eq Callconv | |
| Data Callconv | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Callconv -> c Callconv Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Callconv Источник toConstr :: Callconv -> Constr Источник dataTypeOf :: Callconv -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Callconv) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Callconv) Источник gmapT :: (forall b. Data b => b -> b) -> Callconv -> Callconv Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Callconv -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Callconv -> r Источник gmapQ :: (forall d. Data d => d -> u) -> Callconv -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> Callconv -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> Callconv -> m Callconv Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Callconv -> m Callconv Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Callconv -> m Callconv Источник | |
| Ord Callconv | |
Определено в Language.Haskell.TH.Syntax | |
| Show Callconv | |
| Generic Callconv | |
| type Rep Callconv | |
Определено в Language.Haskell.TH.Syntax type Rep Callconv = D1 ('MetaData "Callconv" "Language.Haskell.TH.Syntax" "template-haskell" 'False) ((C1 ('MetaCons "CCall" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "StdCall" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "CApi" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Prim" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JavaScript" 'PrefixI 'False) (U1 :: Type -> Type)))) | |
Экземпляры
| Eq Foreign | |
| Data Foreign | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Foreign -> c Foreign Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Foreign Source toConstr :: Foreign -> Constr Source dataTypeOf :: Foreign -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Foreign) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Foreign) Source gmapT :: (forall b. Data b => b -> b) -> Foreign -> Foreign Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Foreign -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Foreign -> r Source gmapQ :: (forall d. Data d => d -> u) -> Foreign -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Foreign -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Foreign -> m Foreign Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Foreign -> m Foreign Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Foreign -> m Foreign Source | |
| Ord Foreign | |
Определено в Language.Haskell.TH.Syntax | |
| Show Foreign | |
| Generic Foreign | |
| Ppr Foreign | |
| type Rep Foreign | |
Одно уравнение для экземпляра семейства типов или закрытого семейства типов. Аргументы — тип левой части и результирующее значение правой части.
Например, если у вас есть следующее семейство типов:
type family Foo (a :: k) :: k where forall k (a :: k). Foo @k a = a
Уравнение Foo @k a = a будет представлено следующим образом:
TySynEqn (Just [PlainTV k, KindedTV a (VarT k)]) (AppT (AppKindT (ConT ''Foo) (VarT k)) (VarT a)) (VarT a)
Экземпляры
| Eq TySynEqn | |
| Data TySynEqn | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TySynEqn -> c TySynEqn Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c TySynEqn Источник toConstr :: TySynEqn -> Constr Источник dataTypeOf :: TySynEqn -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c TySynEqn) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c TySynEqn) Источник gmapT :: (forall b. Data b => b -> b) -> TySynEqn -> TySynEqn Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TySynEqn -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TySynEqn -> r Источник gmapQ :: (forall d. Data d => d -> u) -> TySynEqn -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> TySynEqn -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> TySynEqn -> m TySynEqn Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TySynEqn -> m TySynEqn Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TySynEqn -> m TySynEqn Источник | |
| Ord TySynEqn | |
данные TypeFamilyHead Исходный код
Общие элементы OpenTypeFamilyD и ClosedTypeFamilyD. По аналогии с "head" для классов типов и экземпляров классов типов, как определено в Type classes: an exploration of the design space, TypeFamilyHead определяется как элементы объявления между type family и where.
Краткое описание конструкторов
| TypeFamilyHead Name [TyVarBndr] FamilyResultSig (Maybe InjectivityAnn) |
Экземпляры
| Eq TypeFamilyHead | |
Определено в Language.Haskell.TH.Syntax Краткое описание методов(==) :: TypeFamilyHead -> TypeFamilyHead -> Bool Source (/=) :: TypeFamilyHead -> TypeFamilyHead -> Bool Source | |
| Data TypeFamilyHead | |
Определено в Language.Haskell.TH.Syntax Краткое описание методовgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TypeFamilyHead -> c TypeFamilyHead Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c TypeFamilyHead Source toConstr :: TypeFamilyHead -> Constr Source dataTypeOf :: TypeFamilyHead -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c TypeFamilyHead) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c TypeFamilyHead) Source gmapT :: (forall b. Data b => b -> b) -> TypeFamilyHead -> TypeFamilyHead Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TypeFamilyHead -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TypeFamilyHead -> r Source gmapQ :: (forall d. Data d => d -> u) -> TypeFamilyHead -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> TypeFamilyHead -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> TypeFamilyHead -> m TypeFamilyHead Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TypeFamilyHead -> m TypeFamilyHead Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TypeFamilyHead -> m TypeFamilyHead Source | |
| Ord TypeFamilyHead | |
Определено в Language.Haskell.TH.Syntax Методыcompare :: TypeFamilyHead -> TypeFamilyHead -> Ordering Источник (<) :: TypeFamilyHead -> TypeFamilyHead -> Bool Источник (<=) :: TypeFamilyHead -> TypeFamilyHead -> Bool Источник (>) :: TypeFamilyHead -> TypeFamilyHead -> Bool Источник (>=) :: TypeFamilyHead -> TypeFamilyHead -> Bool Источник max :: TypeFamilyHead -> TypeFamilyHead -> TypeFamilyHead Источник min :: TypeFamilyHead -> TypeFamilyHead -> TypeFamilyHead Источник | |
| Show TypeFamilyHead | |
Определено в Language.Haskell.TH.Syntax МетодыshowsPrec :: Int -> TypeFamilyHead -> ShowS Источник show :: TypeFamilyHead -> String Источник showList :: [TypeFamilyHead] -> ShowS Источник | |
| Generic TypeFamilyHead | |
Определено в Language.Haskell.TH.Syntax Связанные типыtype Rep TypeFamilyHead :: Type -> Type Источник Методыfrom :: TypeFamilyHead -> Rep TypeFamilyHead x Источник to :: Rep TypeFamilyHead x -> TypeFamilyHead Источник | |
| type Rep TypeFamilyHead | |
Определено в Language.Haskell.TH.Syntax type Rep TypeFamilyHead = D1 ('MetaData "TypeFamilyHead" "Language.Haskell.TH.Syntax" "template-haskell" 'False) (C1 ('MetaCons "TypeFamilyHead" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr])) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FamilyResultSig) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe InjectivityAnn))))) |
type PatSynType = Type Source
Тип псевдонима шаблона. Обратите внимание, что полностью определенный тип псевдонима шаблона имеет необычную форму, сопровождающуюся двумя кванторами forall и двумя контекстами ограничений. Например, рассмотрим псевдоним шаблона
pattern P x1 x2 ... xn = <some-pattern>
Полный тип P имеет следующий вид
pattern P :: forall universals. required constraints
=> forall existentials. provided constraints
=> t1 -> t2 -> ... -> tn -> t
состоящий из четырёх частей:
- возможные пустые списки универсально квантованных переменных типов и необходимых ограничений на них.
- возможные пустые списки экзистенциально квантованных переменных типов и предоставленные ограничения на них.
- типы
t1,t2, ..,tnсоответственно дляx1,x2, ..,xn, соответственно - тип
tдляderiving, упоминающий только универсалы.
Типы псевдонимов шаблонов взаимодействуют с TH при (а) реификации псевдонима шаблона, (б) красивой печати или (с) явном указании сигнатуры типа псевдонима шаблона:
- Реификация всегда возвращает полностью определенный тип псевдонима шаблона в абстрактной синтаксической форме.
- Красивая печать через
pprPatSynTypeоднозначно сокращает тип псевдонима шаблона в конкретной синтаксической форме: общее правило заключается в печати начальных пустых универсалий и требуемого контекста как() =>, если за ними следуют экзистенциальные и предоставленный контекст. Если указаны только универсалы и их требуемый контекст, но нет экзистенциальных, печатаются только универсалы и их требуемый контекст. Если указаны оба или ни один, то печатаются оба (или ни один). - При явном указании типа псевдонима шаблона с
PatSynSigDлюбой из универсалий, экзистенциалов или их контекстов может быть опущен.
Для получения дополнительной информации о псевдонимах шаблонов и их типах обратитесь к руководству пользователя GHC: https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exts.html#pattern-synonyms.
data DerivStrategy Source
То, что пользователь явно запрашивает при выводе экземпляра.
Конструкторы
| StockStrategy | Стандартный выведенный экземпляр |
| AnyclassStrategy | -XDeriveAnyClass |
| NewtypeStrategy | -XGeneralizedNewtypeDeriving |
| ViaStrategy Type | -XDerivingVia |
Экземпляры
| Eq DerivStrategy | |
Определено в Language.Haskell.TH.Syntax Методы(==) :: DerivStrategy -> DerivStrategy -> Bool Источник (/=) :: DerivStrategy -> DerivStrategy -> Bool Источник | |
| Data DerivStrategy | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DerivStrategy -> c DerivStrategy Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c DerivStrategy Источник toConstr :: DerivStrategy -> Constr Источник dataTypeOf :: DerivStrategy -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c DerivStrategy) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DerivStrategy) Источник gmapT :: (forall b. Data b => b -> b) -> DerivStrategy -> DerivStrategy Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DerivStrategy -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DerivStrategy -> r Источник gmapQ :: (forall d. Data d => d -> u) -> DerivStrategy -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> DerivStrategy -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> DerivStrategy -> m DerivStrategy Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DerivStrategy -> m DerivStrategy Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DerivStrategy -> m DerivStrategy Источник | |
| Ord DerivStrategy | |
data DerivClause Source
Единственное предложение deriving в конце типа данных.
Конструкторы
| DerivClause (Maybe DerivStrategy) Cxt | { deriving stock (Eq, Ord) } |
Экземпляры
| Eq DerivClause | |
Определено в Language.Haskell.TH.Syntax Методы(==) :: DerivClause -> DerivClause -> Bool Source (/=) :: DerivClause -> DerivClause -> Bool Source | |
| Data DerivClause | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DerivClause -> c DerivClause Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c DerivClause Source toConstr :: DerivClause -> Constr Source dataTypeOf :: DerivClause -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c DerivClause) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DerivClause) Source gmapT :: (forall b. Data b => b -> b) -> DerivClause -> DerivClause Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DerivClause -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DerivClause -> r Source gmapQ :: (forall d. Data d => d -> u) -> DerivClause -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> DerivClause -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> DerivClause -> m DerivClause Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DerivClause -> m DerivClause Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DerivClause -> m DerivClause Source | |
| Ord DerivClause | |
data Диапазон Исходный код
Экземпляры
| Eq Range | |
| Data Range | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Range -> c Range Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Range Source toConstr :: Range -> Constr Source dataTypeOf :: Range -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Range) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Range) Source gmapT :: (forall b. Data b => b -> b) -> Range -> Range Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Range -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Range -> r Source gmapQ :: (forall d. Data d => d -> u) -> Range -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Range -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Range -> m Range Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Range -> m Range Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Range -> m Range Source | |
| Ord Range | |
Определено в Language.Haskell.TH.Syntax Методыcompare :: Диапазон -> Диапазон -> Порядок Исходный код (<) :: Диапазон -> Диапазон -> Булево Исходный код (<=) :: Диапазон -> Диапазон -> Булево Исходный код (>) :: Диапазон -> Диапазон -> Булево Исходный код (>=) :: Диапазон -> Диапазон -> Булево Исходный код max :: Диапазон -> Диапазон -> Диапазон Исходный код min :: Диапазон -> Диапазон -> Диапазон Исходный код | |
| Show Диапазон | |
Определено в Language.Haskell.TH.Syntax МетодыshowsPrec :: Целое -> Диапазон -> ShowS Исходный код show :: Диапазон -> Строка Исходный код showList :: [Диапазон] -> ShowS Исходный код | |
| Generic Диапазон | |
Определено в Language.Haskell.TH.Syntax Связанные типыtype Rep Диапазон :: Тип -> Тип Исходный код Методыfrom :: Диапазон -> Rep Диапазон x Исходный код to :: Rep Диапазон x -> Диапазон Исходный код | |
| Ppr Диапазон | |
Определено в Language.Haskell.TH.Ppr | |
| type Rep Диапазон | |
Экземпляры
| Eq Stmt | |
| Data Stmt | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Stmt -> c Stmt Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Stmt Источник toConstr :: Stmt -> Constr Источник dataTypeOf :: Stmt -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Stmt) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Stmt) Источник gmapT :: (forall b. Data b => b -> b) -> Stmt -> Stmt Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Stmt -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Stmt -> r Источник gmapQ :: (forall d. Data d => d -> u) -> Stmt -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> Stmt -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> Stmt -> m Stmt Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Stmt -> m Stmt Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Stmt -> m Stmt Источник | |
| Ord Stmt | |
Экземпляры
| Eq Guard | |
| Data Guard | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Guard -> c Guard Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Guard Источник toConstr :: Guard -> Constr Источник dataTypeOf :: Guard -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Guard) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Guard) Источник gmapT :: (forall b. Data b => b -> b) -> Guard -> Guard Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Guard -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Guard -> r Источник gmapQ :: (forall d. Data d => d -> u) -> Guard -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> Guard -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> Guard -> m Guard Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Guard -> m Guard Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Guard -> m Guard Источник | |
| Ord Guard | |
data Body Исходный код
Экземпляры
| Eq Body | |
| Data Body | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Body -> c Body Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Body Источник toConstr :: Body -> Constr Источник dataTypeOf :: Body -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Body) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Body) Источник gmapT :: (forall b. Data b => b -> b) -> Body -> Body Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Body -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Body -> r Источник gmapQ :: (forall d. Data d => d -> u) -> Body -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> Body -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> Body -> m Body Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Body -> m Body Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Body -> m Body Источник | |
| Ord Body | |
Определено в Language.Haskell.TH.Syntax | |
| Show Body | |
| Generic Body | |
| type Rep Body | |
Определено в Language.Haskell.TH.Syntax type Rep Body = D1 ('MetaData "Body" "Language.Haskell.TH.Syntax" "template-haskell" 'False) (C1 ('MetaCons "GuardedB" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Guard, Exp)])) :+: C1 ('MetaCons "NormalB" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp))) | |
Необработанные байты, вставленные в двоичный файл.
Избегайте прямого использования конструктора Bytes, так как он может измениться в будущем. Используйте вспомогательные функции, такие как mkBytes в Language.Haskell.TH.Lib вместо этого.
Конструкторы
| Bytes | |
Поля
| |
Экземпляры
| Eq Bytes | |
| Data Bytes | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Bytes -> c Bytes Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Bytes Source toConstr :: Bytes -> Constr Source dataTypeOf :: Bytes -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Bytes) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Bytes) Source gmapT :: (forall b. Data b => b -> b) -> Bytes -> Bytes Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Bytes -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Bytes -> r Source gmapQ :: (forall d. Data d => d -> u) -> Bytes -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Bytes -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Bytes -> m Bytes Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Bytes -> m Bytes Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Bytes -> m Bytes Source | |
| Ord Bytes | |
data Lit Исходный код
Краткое описание конструкторов
| CharL Char | |
| StringL String | |
| IntegerL Integer | Используется для перегруженных и неперегруженных литералов. В данный момент у нас нет хорошего способа представить неперегруженные литералы. Возможно, это не имеет значения? |
| RationalL Rational | |
| IntPrimL Integer | |
| WordPrimL Integer | |
| FloatPrimL Rational | |
| DoublePrimL Rational | |
| StringPrimL [Word8] | Примитивная строка в стиле C, тип |
| BytesPrimL Bytes | Некоторые необработанные байты, тип |
| CharPrimL Char |
Экземпляры
| Eq Lit | |
| Data Lit | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Lit -> c Lit Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Lit Source toConstr :: Lit -> Constr Source dataTypeOf :: Lit -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Lit) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Lit) Source gmapT :: (forall b. Data b => b -> b) -> Lit -> Lit Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Lit -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Lit -> r Source gmapQ :: (forall d. Data d => d -> u) -> Lit -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Lit -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Lit -> m Lit Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Lit -> m Lit Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Lit -> m Lit Source | |
| Ord Lit | |
Определено в Language.Haskell.TH.Syntax Методыcompare :: Lit -> Lit -> Ordering Исходный код (<) :: Lit -> Lit -> Bool Исходный код (<=) :: Lit -> Lit -> Bool Исходный код (>) :: Lit -> Lit -> Bool Исходный код (>=) :: Lit -> Lit -> Bool Исходный код max :: Lit -> Lit -> Lit Исходный код min :: Lit -> Lit -> Lit Исходный код | |
| Show Lit | |
Определено в Language.Haskell.TH.Syntax МетодыshowsPrec :: Int -> Lit -> ShowS Исходный код show :: Lit -> String Исходный код showList :: [Lit] -> ShowS Исходный код | |
| Generic Lit | |
Определено в Language.Haskell.TH.Syntax Связанные типыtype Rep Lit :: Type -> Type Исходный код | |
| Ppr Lit | |
Определено в Language.Haskell.TH.Ppr | |
| type Rep Lit | |
Определено в Language.Haskell.TH.Syntax | |
Word8])) :+: (C1 ('MetaCons "BytesPrimL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bytes)) :+: C1 ('MetaCons "CharPrimL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Char)))))) |
data FixityDirection Source
Экземпляры
data Fixity Исходный код
Конструкторы
| Fixity Int FixityDirection |
Экземпляры
| Eq Fixity | |
| Data Fixity | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Fixity -> c Fixity Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Fixity Источник toConstr :: Fixity -> Constr Источник dataTypeOf :: Fixity -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Fixity) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Fixity) Источник gmapT :: (forall b. Data b => b -> b) -> Fixity -> Fixity Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Fixity -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Fixity -> r Источник gmapQ :: (forall d. Data d => d -> u) -> Fixity -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> Fixity -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> Fixity -> m Fixity Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Fixity -> m Fixity Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Fixity -> m Fixity Источник | |
| Ord Fixity | |
type InstanceDec = Dec Исходный код
InstanceDec описывает отдельный экземпляр класса или функции типа. Это просто Dec, но гарантируется, что это один из следующих:
-
InstanceD(с пустым[Dec]) -
DataInstDилиNewtypeInstD(с пустым производным[Name]) TySynInstD
type Unlifted = Bool Исходный код
В PrimTyConI, является ли конструктор типа неунифицированным?
type Arity = Int Исходный код
В PrimTyConI, арность конструктора типа
В UnboxedSumE, UnboxedSumT, и UnboxedSumP, общее количество SumAlt. Например, (#|#) имеет SumArity 2.
В UnboxedSumE и UnboxedSumP, число, связанное с конкретным конструктором данных. SumAlt — индексируются с единицы и не должны превышать значение соответствующего SumArity. Например:
type ParentName = Name Source
В ClassOpI и DataConI, имя родительского класса или типа
data ModuleInfo Source
Получено из reifyModule в Q монаде.
Конструкторы
| ModuleInfo [Module] | Содержит список импортов модуля. |
Экземпляры
| Eq ModuleInfo | |
Определено в Language.Haskell.TH.Syntax Методы(==) :: ModuleInfo -> ModuleInfo -> Bool Источник (/=) :: ModuleInfo -> ModuleInfo -> Bool Источник | |
| Data ModuleInfo | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ModuleInfo -> c ModuleInfo Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ModuleInfo Источник toConstr :: ModuleInfo -> Constr Источник dataTypeOf :: ModuleInfo -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ModuleInfo) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ModuleInfo) Источник gmapT :: (forall b. Data b => b -> b) -> ModuleInfo -> ModuleInfo Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ModuleInfo -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ModuleInfo -> r Источник gmapQ :: (forall d. Data d => d -> u) -> ModuleInfo -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> ModuleInfo -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> ModuleInfo -> m ModuleInfo Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ModuleInfo -> m ModuleInfo Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ModuleInfo -> m ModuleInfo Источник | |
| Ord ModuleInfo | |
data Info Исходный код
Конструкторы
| ClassI Dec [InstanceDec] | Класс с списком его видимых экземпляров |
| ClassOpI Имя Тип ИмяРодителя | Метод класса |
| TyConI Dec | «Простой» конструктор типа. «Более сложные» конструкторы типов возвращаются с использованием |
| FamilyI Dec [InstanceDec] | Семейство типов или данных со списком его видимых экземпляров. Закрытое семейство типов возвращается с 0 экземплярами. |
| PrimTyConI Имя Арность Неподнятый | «Примитивный» конструктор типа, который нельзя выразить с помощью |
| DataConI Имя Тип ИмяРодителя | Конструктор данных |
| PatSynI Имя ТипПатерна | Псевдоним паттерна |
| VarI Имя Тип (Возможно Dec) |
Переменная «значения» (в отличие от переменной типа, см. Поле |
| TyVarI Имя Тип |
Переменная типа. Поле |
Экземпляры
| Eq Info | |
| Data Info | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Info -> c Info Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Info Source toConstr :: Info -> Constr Source dataTypeOf :: Info -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Info) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Info) Source gmapT :: (forall b. Data b => b -> b) -> Info -> Info Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Info -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Info -> r Source gmapQ :: (forall d. Data d => d -> u) -> Info -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Info -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Info -> m Info Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Info -> m Info Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Info -> m Info Source | |
| Ord Info | |
Определено в Language.Haskell.TH.Syntax | |
| Show Info | |
| Generic Info | |
| Ppr Info | |
| type Rep Info | |
Определено в Language.Haskell.TH.Syntax | |
Type)))))) |
Конструкторы
| Loc | |
Поля
| |
Экземпляры
| Eq Loc | |
| Data Loc | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Loc -> c Loc Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Loc Source toConstr :: Loc -> Constr Source dataTypeOf :: Loc -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Loc) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Loc) Source gmapT :: (forall b. Data b => b -> b) -> Loc -> Loc Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Loc -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Loc -> r Source gmapQ :: (forall d. Data d => d -> u) -> Loc -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Loc -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Loc -> m Loc Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Loc -> m Loc Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Loc -> m Loc Source | |
| Ord Loc | |
Определено в Language.Haskell.TH.Syntax Методыcompare :: Loc -> Loc -> Ordering Исходный код (<) :: Loc -> Loc -> Bool Исходный код (<=) :: Loc -> Loc -> Bool Исходный код (>) :: Loc -> Loc -> Bool Исходный код (>=) :: Loc -> Loc -> Bool Исходный код max :: Loc -> Loc -> Loc Исходный код min :: Loc -> Loc -> Loc Исходный код | |
| Show Loc | |
Определено в Language.Haskell.TH.Syntax МетодыshowsPrec :: Int -> Loc -> ShowS Исходный код show :: Loc -> String Исходный код showList :: [Loc] -> ShowS Исходный код | |
| Generic Loc | |
Определено в Language.Haskell.TH.Syntax Связанные типыtype Rep Loc :: Type -> Type Исходный код | |
| Ppr Loc | |
Определено в Language.Haskell.TH.Ppr | |
| type Rep Loc | |
Определено в Language.Haskell.TH.Syntax type Rep Loc = D1 ('MetaData "Loc" "Language.Haskell.TH.Syntax" "template-haskell" 'False) (C1 ('MetaCons "Loc" 'PrefixI 'True) ((S1 ('MetaSel ('Just "loc_filename") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel ('Just "loc_package") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)) :*: (S1 ('MetaSel ('Just "loc_module") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: (S1 ('MetaSel ('Just "loc_start") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CharPos) :*: S1 ('MetaSel ('Just "loc_end") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CharPos))))) |
Uniq используется GHC для различения имён.
Экземпляры
| Eq NameSpace | |
| Data NameSpace | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> NameSpace -> c NameSpace Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c NameSpace Источник toConstr :: NameSpace -> Constr Источник dataTypeOf :: NameSpace -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c NameSpace) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NameSpace) Источник gmapT :: (forall b. Data b => b -> b) -> NameSpace -> NameSpace Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> NameSpace -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> NameSpace -> r Источник gmapQ :: (forall d. Data d => d -> u) -> NameSpace -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> NameSpace -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> NameSpace -> m NameSpace Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> NameSpace -> m NameSpace Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> NameSpace -> m NameSpace Источник | |
| Ord NameSpace | |
data ТипИмени Исходный код
Краткое описание конструкторов
| NameS | Неквалифицированное имя; динамически связанное |
| NameQ ModName | Квалифицированное имя; динамически связанное |
| NameU !Uniq | Уникальное локальное имя |
| NameL !Uniq | Локальное имя, связанное вне TH AST |
| NameG NameSpace PkgName ModName | Глобальное имя, связанное вне TH AST: Оригинальное имя (только вхождения, не связывающие переменные). Необходимо также пространство имён, чтобы точно знать, какое имя мы имеем в виду |
Экземпляры
| Eq NameFlavour | |
Определено в Language.Haskell.TH.Syntax Методы(==) :: NameFlavour -> NameFlavour -> Bool Source (/=) :: NameFlavour -> NameFlavour -> Bool Source | |
| Data NameFlavour | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> NameFlavour -> c NameFlavour Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c NameFlavour Source toConstr :: NameFlavour -> Constr Source dataTypeOf :: NameFlavour -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c NameFlavour) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NameFlavour) Source gmapT :: (forall b. Data b => b -> b) -> NameFlavour -> NameFlavour Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> NameFlavour -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> NameFlavour -> r Source gmapQ :: (forall d. Data d => d -> u) -> NameFlavour -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> NameFlavour -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> NameFlavour -> m NameFlavour Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> NameFlavour -> m NameFlavour Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> NameFlavour -> m NameFlavour Source | |
| Ord NameFlavour | |
Определено в Language.Haskell.TH.Syntax Методыcompare :: NameFlavour -> NameFlavour -> Ordering Исходный код (<) :: NameFlavour -> NameFlavour -> Bool Исходный код (<=) :: NameFlavour -> NameFlavour -> Bool Исходный код (>) :: NameFlavour -> NameFlavour -> Bool Исходный код (>=) :: NameFlavour -> NameFlavour -> Bool Исходный код max :: NameFlavour -> NameFlavour -> NameFlavour Исходный код min :: NameFlavour -> NameFlavour -> NameFlavour Исходный код | |
| Show NameFlavour | |
Определено в Language.Haskell.TH.Syntax МетодыshowsPrec :: Int -> NameFlavour -> ShowS Исходный код show :: NameFlavour -> String Исходный код showList :: [NameFlavour] -> ShowS Исходный код | |
| Generic NameFlavour | |
Определено в Language.Haskell.TH.Syntax Связанные типыtype Rep NameFlavour :: Type -> Type Исходный код Методыfrom :: NameFlavour -> Rep NameFlavour x Исходный код to :: Rep NameFlavour x -> NameFlavour Исходный код | |
| type Rep NameFlavour | |
Экземпляры
| Eq OccName | |
| Data OccName | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> OccName -> c OccName Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c OccName Источник toConstr :: OccName -> Constr Источник dataTypeOf :: OccName -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c OccName) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c OccName) Источник gmapT :: (forall b. Data b => b -> b) -> OccName -> OccName Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> OccName -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> OccName -> r Источник gmapQ :: (forall d. Data d => d -> u) -> OccName -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> OccName -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> OccName -> m OccName Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> OccName -> m OccName Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> OccName -> m OccName Источник | |
| Ord OccName | |
Определено в Language.Haskell.TH.Syntax Методыcompare :: OccName -> OccName -> Ordering Исходный код (<) :: OccName -> OccName -> Bool Исходный код (<=) :: OccName -> OccName -> Bool Исходный код (>) :: OccName -> OccName -> Bool Исходный код (>=) :: OccName -> OccName -> Bool Исходный код max :: OccName -> OccName -> OccName Исходный код min :: OccName -> OccName -> OccName Исходный код | |
| Show OccName | |
Определено в Language.Haskell.TH.Syntax МетодыshowsPrec :: Int -> OccName -> ShowS Исходный код show :: OccName -> String Исходный код showList :: [OccName] -> ShowS Исходный код | |
| Generic OccName | |
Определено в Language.Haskell.TH.Syntax Связанные типыtype Rep OccName :: Тип -> Тип Исходный код | |
| type Rep OccName | |
Определено в Language.Haskell.TH.Syntax | |
data Модуль Исходный код
Получено из reifyModule и thisModule.
Экземпляры
| Eq Module | |
| Data Module | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Module -> c Module Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Module Source toConstr :: Module -> Constr Source dataTypeOf :: Module -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Module) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Module) Source gmapT :: (forall b. Data b => b -> b) -> Module -> Module Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Module -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Module -> r Source gmapQ :: (forall d. Data d => d -> u) -> Module -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Module -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Module -> m Module Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Module -> m Module Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Module -> m Module Source | |
| Ord Module | |
Экземпляры
| Eq PkgName | |
| Data PkgName | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> PkgName -> c PkgName Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c PkgName Source toConstr :: PkgName -> Constr Source dataTypeOf :: PkgName -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c PkgName) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PkgName) Source gmapT :: (forall b. Data b => b -> b) -> PkgName -> PkgName Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> PkgName -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> PkgName -> r Source gmapQ :: (forall d. Data d => d -> u) -> PkgName -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> PkgName -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> PkgName -> m PkgName Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> PkgName -> m PkgName Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> PkgName -> m PkgName Source | |
| Ord PkgName | |
Определено в Language.Haskell.TH.Syntax Методыcompare :: PkgName -> PkgName -> Ordering Исходный код (<) :: PkgName -> PkgName -> Bool Исходный код (<=) :: PkgName -> PkgName -> Bool Исходный код (>) :: PkgName -> PkgName -> Bool Исходный код (>=) :: PkgName -> PkgName -> Bool Исходный код max :: PkgName -> PkgName -> PkgName Исходный код min :: PkgName -> PkgName -> PkgName Исходный код | |
| Show PkgName | |
Определено в Language.Haskell.TH.Syntax МетодыshowsPrec :: Int -> PkgName -> ShowS Исходный код show :: PkgName -> String Исходный код showList :: [PkgName] -> ShowS Исходный код | |
| Generic PkgName | |
Определено в Language.Haskell.TH.Syntax Связанные типыtype Rep PkgName :: Type -> Type Исходный код | |
| type Rep PkgName | |
Определено в Language.Haskell.TH.Syntax | |
newtype ИмяМодуля Исходный код
Экземпляры
| Eq ModName | |
| Data ModName | |
Определено в Language.Haskell.TH.Syntax Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ModName -> c ModName Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ModName Источник toConstr :: ModName -> Constr Источник dataTypeOf :: ModName -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ModName) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ModName) Источник gmapT :: (forall b. Data b => b -> b) -> ModName -> ModName Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ModName -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ModName -> r Источник gmapQ :: (forall d. Data d => d -> u) -> ModName -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> ModName -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> ModName -> m ModName Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ModName -> m ModName Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ModName -> m ModName Источник | |
| Ord ModName | |
Определено в Language.Haskell.TH.Syntax | |
| Show ModName | |
| Generic ModName | |
| type Rep ModName | |
Определено в Language.Haskell.TH.Syntax | |
Минимальное полное определение
qNewName, qReport, qRecover, qLookupName, qReify, qReifyFixity, qReifyType, qReifyInstances, qReifyRoles, qReifyAnnotations, qReifyModule, qReifyConStrictness, qLocation, qAddDependentFile, qAddTempFile, qAddTopDecls, qAddForeignFilePath, qAddModFinalizer, qAddCorePlugin, qGetQ, qPutQ, qIsExtEnabled, qExtsEnabled
Краткое описание методов
Аргументы
| :: Bool | |
| -> String | |
| -> m () | Сообщить об ошибке (True) или предупреждении (False) ...но продолжить; использовать |
Аргументы
| :: m a | обработчик ошибок |
| -> m a | действие, которое может завершиться ошибкой |
| -> m a | Восстановление из монадического |
qLookupName :: Bool -> String -> m (Maybe Name) Source
qReify :: Name -> m Info Source
qReifyFixity :: Name -> m (Maybe Fixity) Source
qReifyType :: Name -> m Type Source
qReifyInstances :: Name -> [Type] -> m [Dec] Source
qReifyRoles :: Name -> m [Role] Source
qReifyAnnotations :: Data a => AnnLookup -> m [a] Source
qReifyModule :: Module -> m ModuleInfo Source
qReifyConStrictness :: Name -> m [DecidedStrictness] Source
qAddDependentFile :: FilePath -> m () Source
qAddTempFile :: String -> m FilePath Source
qAddTopDecls :: [Dec] -> m () Source
qAddForeignFilePath :: ForeignSrcLang -> String -> m () Source
qAddModFinalizer :: Q () -> m () Source
qAddCorePlugin :: String -> m () Source
qGetQ :: Typeable a => m (Maybe a) Source
qPutQ :: Typeable a => a -> m () Source
qIsExtEnabled :: Extension -> m Bool Source
qExtsEnabled :: m [Extension] Source
Экземпляры
| Quasi Q | |
Определено в Language.Haskell.TH.Syntax | |
Краткое описание методовqNewName :: String -> Q Name Source qReport :: Bool -> String -> Q () Source qRecover :: Q a -> Q a -> Q a Source qLookupName :: Bool -> String -> Q (Maybe Name) Source qReify :: Name -> Q Info Source qReifyFixity :: Name -> Q (Maybe Fixity) Source qReifyType :: Name -> Q Type Source qReifyInstances :: Name -> [Type] -> Q [Dec] Source qReifyRoles :: Name -> Q [Role] Source qReifyAnnotations :: Data a => AnnLookup -> Q [a] Source qReifyModule :: Module -> Q ModuleInfo Source qReifyConStrictness :: Name -> Q [DecidedStrictness] Source qAddDependentFile :: FilePath -> Q () Source qAddTempFile :: String -> Q FilePath Source qAddTopDecls :: [Dec] -> Q () Source qAddForeignFilePath :: ForeignSrcLang -> String -> Q () Source qAddModFinalizer :: Q () -> Q () Source qAddCorePlugin :: String -> Q () Source qGetQ :: Typeable a => Q (Maybe a) Source qPutQ :: Typeable a => a -> Q () Source qIsExtEnabled :: Extension -> Q Bool Source qExtsEnabled :: Q [Extension] Source |
badIO :: Строка -> IO a Источник
counter :: IORef Уникальный Источник
runQ :: Quasi m => Q a -> m a Источник
report :: Булево -> Строка -> Q () Источник
Устарело: Используйте reportError или reportWarning вместо этого
Сообщить об ошибке (True) или предупреждении (False), но продолжить; используйте fail для остановки.
reportError :: Строка -> Q () Источник
Сообщить пользователю об ошибке, но разрешить продолжение вычисления текущего сплейса. Для прерывания вычисления используйте fail.
reportWarning :: Строка -> Q () Источник
Сообщить пользователю о предупреждении и продолжить.
Восстановление после ошибок, поднятых reportError или fail.
lookupName :: Булево -> Строка -> Q (Может Имя) Источник
lookupTypeName :: Строка -> Q (Может Имя) Источник
Поиск заданного имени в области видимости (пространстве имен типов) текущего сплейса. Для получения дополнительной информации см. Language.Haskell.TH.Syntax.
lookupValueName :: Строка -> Q (Может Имя) Источник
Поиск заданного имени в области видимости (пространстве имен значений) текущего сплейса. Для получения дополнительной информации см. Language.Haskell.TH.Syntax.
reify :: Имя -> Q Информация Источник
reify ищет информацию об Name.
Иногда полезно создать имя аргумента с помощью lookupTypeName или lookupValueName, чтобы убедиться, что мы реифицируем из правильного пространства имен. Например, в данном контексте:
data D = D
что D reify (mkName "D") возвращает информацию о? (Ответ: D — типе, но не полагайтесь на это.) Чтобы получить информацию о D — значении, используйте lookupValueName:
do Just nm <- lookupValueName "D" reify nm
и чтобы получить информацию о D — типе, используйте lookupTypeName.
reifyFixity :: Имя -> Q (Может Фиксированность) Источник
reifyFixity nm пытается найти объявление фиксированности для nm. Например, если функция foo имеет объявление фиксированности infixr 7 foo, то reifyFixity 'foo вернёт Just (Fixity 7 InfixR). Если у функции bar нет объявления фиксированности, то reifyFixity 'bar возвращает Nothing, поэтому вы можете предположить, что у bar есть defaultFixity.
reifyType :: Имя -> Q Тип Источник
reifyType nm пытается найти тип или вид nm. Например, reifyType 'not возвращает Bool -> Bool, а reifyType ''Bool возвращает Type. Это работает даже если нет явного подписи, а тип или вид выводятся.
reifyInstances :: Имя -> [Тип] -> Q [ОбъявлениеInstance] Источник
reifyInstances nm tys возвращает список видимых экземпляров nm tys. То есть, если nm — имя типа класса, то возвращаются все экземпляры этого класса в типах tys. Или же, если nm — имя семейства данных или семейства типов, возвращаются все экземпляры этого семейства в типах tys.
Обратите внимание, что это «поверхностная» проверка; возвращаемые объявления имеют только заголовки экземпляров, которые унифицируются с nm tys, но они не обязательно должны быть удовлетворимыми.
-
reifyInstances ''Eq [ TupleT 2 `AppT` ConT ''A `AppT` ConT ''B ]содержитinstance (Eq a, Eq b) => Eq (a, b)независимо от того, реализуют лиAиBсамиEq -
reifyInstances ''Show [ VarT (mkName "a") ]генерирует каждый доступный экземплярEq
Существует один граничный случай: reifyInstances ''Typeable tys в настоящее время всегда возвращает пустой список (независимо от того, какие tys предоставлены).
reifyRoles :: Имя -> Q [Роль] Источник
reifyRoles nm возвращает список ролей, связанных с параметрами тиконструктора nm. Возвращает ошибку, если nm не найден или не является тиконструктором. Возвращаемый список никогда не должен содержать InferR.
reifyAnnotations :: Data a => AnnLookup -> Q [a] Source
Возвращает список аннотаций, связанных с target. Возвращаются только аннотации с соответствующим типом. Поэтому, если у вас есть аннотации Int и String для одного и того же объекта, вам нужно вызвать эту функцию дважды.
reifyModule :: Module -> Q ModuleInfo Source
Ищет информацию о модуле mod. Чтобы найти текущий модуль, вызовите эту функцию со значением, возвращаемым thisModule.
reifyConStrictness :: Name -> Q [DecidedStrictness] Source
Ищет информацию о строгости полей конструктора с именем nm. Обратите внимание, что информация о строгости, возвращаемая reifyConStrictness, может не соответствовать тому, что записано в исходном коде. Например, в следующем объявлении данных:
data Pair a = Pair a a
reifyConStrictness в большинстве случаев вернёт [DecidedLazy, DecidedLazy], но вернёт [DecidedStrict, DecidedStrict], если включена расширение языка -XStrictData.
isInstance :: Name -> [Type] -> Q Bool Source
Список инстансов, возвращаемый reifyInstances, не пустой?
Местоположение, в котором выполняется это вычисление.
Функция runIO позволяет выполнить вычисление ввода-вывода в монаде Q. Обратите внимание: гарантируется порядок вызовов runIO в пределах одного вычисления Q, но не порядок, в котором выполняются вставки.
Примечание: по различным причинам, ручка stdout и stderr не обязательно сбрасываются при завершении компиляции, поэтому вам следует сбросить их самостоятельно.
addDependentFile :: FilePath -> Q () Source
Записывает внешние файлы, используемые runIO (зависимые). Компилятор может распознать, что необходимо перекомпилировать файл Haskell при изменении внешнего файла.
Ожидается абсолютный путь к файлу.
Примечания:
- ghc -M не знает о таких зависимостях — он не выполняет TH.
- Зависимость основана на содержимом файла, а не на времени его изменения.
addTempFile :: String -> Q FilePath Source
Получение временного пути к файлу с заданным суффиксом. Компилятор удалит этот файл после компиляции.
addTopDecls :: [Dec] -> Q () Source
Добавление дополнительных объявлений верхнего уровня. Добавляемые объявления будут проверены на соответствие типу вместе с текущей группой объявлений.
addForeignFile :: ForeignSrcLang -> String -> Q () Source
Устарело: Используйте addForeignSource вместо этого.
addForeignSource :: ForeignSrcLang -> String -> Q () Source
Генерирует внешний файл, который будет скомпилирован и связан с объектом текущего модуля. В настоящее время поддерживаются только языки, которые можно скомпилировать с помощью компилятора C, и флаги, переданные в качестве части -optc, также будут применены к вызову компилятора C, который будет их компилировать.
Обратите внимание, что для языков, отличных от C (например, C++), необходимо использовать директивы extern C для получения символов, к которым мы можем получить доступ из Haskell.
Для получения более информативных ошибок рекомендуется использовать псевдокоманды #line при генерации файлов C, например:
{-# LANGUAGE CPP #-}
...
addForeignSource LangC $ unlines
[ "#line " ++ show (562 + 1) ++ " " ++ show "libraries/template-haskell/./Language/Haskell/TH/Syntax.hs"
, ...
]
addForeignFilePath :: ForeignSrcLang -> FilePath -> Q () Source
То же, что и addForeignSource, но ожидает получить путь к внешнему файлу вместо String его содержимого. Рассмотрите использование этого в сочетании с addTempFile.
Это хорошая альтернатива addForeignSource при попытке непосредственного подключения объектного файла.
addModFinalizer :: Q () -> Q () Source
Добавление финализатора, который будет выполнен в монаде Q после проверки типа текущего модуля. Это имеет смысл только при выполнении вставки верхнего уровня.
Финализатору передается локальная среда типов в точке вставки. Таким образом, reify может найти локальные определения при выполнении внутри финализатора.
addCorePlugin :: String -> Q () Source
Добавление ядра плагина в конвейер компиляции.
addCorePlugin m имеет почти тот же эффект, что и передача -fplugin=m в ghc в командной строке. Основное отличие состоит в том, что модуль плагина m не должен принадлежать текущему пакету. Когда TH выполняется, уже слишком поздно сообщить компилятору, что нам сначала необходимо скомпилировать модуль плагина в текущем пакете.
getQ :: Typeable a => Q (Maybe a) Source
Получение состояния из монады Q. Обратите внимание, что состояние локально для модуля Haskell, в котором выполняется выражение Template Haskell.
Замените состояние в Q монаде. Обратите внимание, что состояние локально для модуля Haskell, в котором выполняется выражение Template Haskell.
isExtEnabled :: Расширение -> Q Bool Исходный код
Определите, включено ли данное языковое расширение в Q монаде.
extsEnabled :: Q [Расширение] Исходный код
Список всех включённых языковых расширений.
nothingName :: Имя Исходный код
nonemptyName :: Имя Исходный код
dataToQa :: forall a k q. Данные a => (Имя -> k) -> (Лит -> Q q) -> (k -> [Q q] -> Q q) -> (forall b. Данные b => b -> Может быть (Q q)) -> a -> Q q Исходный код
dataToQa — это внутренняя вспомогательная функция для построения универсальных функций преобразования из типов с Data экземплярами в различные представления квази-цитирования. Смотрите исходный код dataToExpQ и dataToPatQ для двух примеров использования: mkCon, mkLit и appQ перегружаемы для учёта различного синтаксиса выражений и шаблонов; antiQ позволяет вам переопределять типы-специфичные случаи, распространённое использование — просто const Nothing, что приводит к отсутствию перегрузки.
dataToExpQ :: Данные a => (forall b. Данные b => b -> Может быть (Q Выражение)) -> a -> Q Выражение Исходный код
dataToExpQ преобразует значение в представление 'Q Exp' того же значения в стиле SYB. Оно обобщается, чтобы принять функцию для переопределения типов-специфичных случаев; см. liftData для более часто используемого варианта.
liftData :: Данные a => a -> Q Выражение Исходный код
liftData — это вариант lift в Lift типе класса, который работает для любого типа с Data экземпляром.
dataToPatQ :: Данные a => (forall b. Данные b => b -> Может быть (Q Шаблон)) -> a -> Q Шаблон Исходный код
dataToPatQ преобразует значение в представление 'Q Pat' того же значения в стиле SYB. Принимает функцию для обработки типов-специфичных случаев, альтернативно, передайте const Nothing, чтобы получить поведение по умолчанию.
mkModName :: Строка -> ИмяМодуля Исходный код
modString :: ИмяМодуля -> Строка Исходный код
mkPkgName :: Строка -> ИмяПакета Исходный код
pkgString :: ИмяПакета -> Строка Исходный код
mkOccName :: Строка -> ИмяИспользуемогоИмени Исходный код
occString :: ИмяИспользуемогоИмени -> Строка Исходный код
nameBase :: Имя -> Строка Исходный код
Имя без префикса модуля.
Примеры
>>> nameBase ''Data.Either.Either "Either" >>> nameBase (mkName "foo") "foo" >>> nameBase (mkName "Module.foo") "foo"
nameModule :: Имя -> Может быть Строка Исходный код
Префикс модуля имени, если он существует.
Примеры
>>> nameModule ''Data.Either.Either Just "Data.Either" >>> nameModule (mkName "foo") Nothing >>> nameModule (mkName "Module.foo") Just "Module"
namePackage :: Имя -> Возможно Строка Исходный код
Пакет имени, если он существует.
Примеры
>>> namePackage ''Data.Either.Either Just "base" >>> namePackage (mkName "foo") Nothing >>> namePackage (mkName "Module.foo") Nothing
nameSpace :: Имя -> Возможно ИмяПространства Исходный код
Возвращает, представляет ли имя появление глобальной переменной (VarName), конструктора данных (DataName), конструктора типа или типа класса (TcClsName). Если не уверены, возвращается Nothing.
Примеры
>>> nameSpace 'Prelude.id Just VarName >>> nameSpace (mkName "id") Nothing -- only works for top-level variable names >>> nameSpace 'Data.Maybe.Just Just DataName >>> nameSpace ''Data.Maybe.Maybe Just TcClsName >>> nameSpace ''Data.Ord.Ord Just TcClsName
mkNameU :: Строка -> Уникальный -> Имя Исходный код
Используется только внутри
mkNameG :: ИмяПространства -> Строка -> Строка -> Строка -> Имя Исходный код
Используется для 'x и т. д., но недоступно программисту
showName :: Имя -> Строка Исходный код
showName' :: NameIs -> Имя -> Строка Исходный код
tupleDataName :: Целое -> Имя Исходный код
Конструктор данных кортежа
tupleTypeName :: Целое -> Имя Исходный код
Конструктор типа кортежа
unboxedTupleDataName :: Целое -> Имя Исходный код
Конструктор данных необработанного кортежа
unboxedTupleTypeName :: Целое -> Имя Исходный код
Конструктор типа необработанного кортежа
mk_tup_name :: Целое -> ИмяПространства -> Булево -> Имя Исходный код
unboxedSumDataName :: SumAlt -> SumArity -> Имя Исходный код
Конструктор данных необработанной суммы
unboxedSumTypeName :: SumArity -> Имя Исходный код
Конструктор типа необработанной суммы
maxPrecedence :: Целое Исходный код
Наивысший разрешенный приоритет оператора для Fixity конструктора (ответ: 9)
defaultFixity :: Fixity Исходный код
Значение по умолчанию fixity: infixl 9
cmpEq :: Порядок -> Булево Исходный код
thenCmp :: Порядок -> Порядок -> Порядок Исходный код
Языковые расширения
module Language.Haskell.TH.LanguageExtensions
data ForeignSrcLang Исходный код
Форматы внешних данных, поддерживаемые GHC через TH
Примеры использования
| Eq ForeignSrcLang | |
Определено в GHC.ForeignSrcLang.Type Методы== :: ForeignSrcLang -> ForeignSrcLang -> Bool Исходный код /= :: ForeignSrcLang -> ForeignSrcLang -> Bool Исходный код | |
| Show ForeignSrcLang | |
Определено в GHC.ForeignSrcLang.Type МетодыshowsPrec :: Int -> ForeignSrcLang -> ShowS Исходный код show :: ForeignSrcLang -> Строка Исходный код showList :: [ForeignSrcLang] -> ShowS Исходный код | |
| Generic ForeignSrcLang | |
Определено в GHC.ForeignSrcLang.Type Связанные типыtype Rep ForeignSrcLang :: Тип -> Тип Исходный код Методыfrom :: ForeignSrcLang -> Rep ForeignSrcLang x Исходный код to :: Rep ForeignSrcLang x -> ForeignSrcLang Исходный код | |
| type Rep ForeignSrcLang | |
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/8.10.2/docs/html/libraries/template-haskell-2.16.0.0/Language-Haskell-TH-Syntax.html