Copyright | (c) Wardopdem 2017 |
---|---|
License | GPL-3 |
Maintainer | wardopdem@gmail.com |
Stability | experimental |
Portability | non-portable (GHC extesions) |
Safe Haskell | None |
Language | Haskell2010 |
Types and functions for gereration declarations for realizations variable number of function parameters.
Функция для реализации переменнго числа параметров.
:: ArgProc a | |
=> String | Имя для создаваемой функции |
-> [Name] |
|
-> a | Далее следует произвольное количество значениq типов класса |
Генератор деклараций для реализации переменного числа параметров - основная экспортируемая функция (с переменным числом параметров).
Классы и типы для реализации механизма переменного числа параметров
type InstMaker = Type -> Type -> Name -> DecsQ Source #
Генератор деклараций экземпляров [InstanceD
]
- :: класс
- -> тип
- -> метод
- -> декларации экземпляров
type InstMakerQ = Q InstMaker Source #
InstMaker завёртнутый в манаду цитирования Q
class InstSrc a where Source #
Класс типов, на основе которого можно построить процедуру генерации деклараций экземпляров [InstanceD
]
toMaker :: a -> InstMakerQ Source #
InstSrc [Name] Source # | Генератор деклараций экземпляров по списку имён типов вида |
InstSrc ([Name], ExpQ) Source # | Генератор деклараций экземпляров по парам вида: |
InstSrc (TypeQ, ExpQ) Source # | Генератор деклараций экземпляров по парам вида: |
InstSrc (Name, ExpQ) Source # | Генератор деклараций экземпляров по парам вида: |
InstSrc (Genz, ExpQ) Source # | Для пар вида (Genz [t| ... |], [| expr |]).
Строит генератор экземпляров вида
|
class ArgProc a where Source #
Реализация переменного числа параметров функции defVargsFun
prc :: String -> [Name] -> [InstMakerQ] -> a Source #
Реализация механизма накопления/обработки параметров типа InstMakerQ
Обёртка для декларации необходимости генерации "обобщённого" экзепляра вида
a ~ T1, b ~ T2 => C a b ...