| Copyright | (c) Wardopdem 2017 |
|---|---|
| License | GPL-3 |
| Maintainer | wardopdem@gmail.com |
| Stability | experimental |
| Portability | non-portable (GHC extesions) |
| Safe Haskell | None |
| Language | Haskell2010 |
Data.Function.Vargs
Contents
Description
Types and functions for gereration declarations for realizations variable number of function parameters.
Функция для реализации переменнго числа параметров.
Arguments
| :: 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]
Minimal complete definition
Methods
toMaker :: a -> InstMakerQ Source #
Instances
| 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
Minimal complete definition
Methods
prc :: String -> [Name] -> [InstMakerQ] -> a Source #
Реализация механизма накопления/обработки параметров типа InstMakerQ
Обёртка для декларации необходимости генерации "обобщённого" экзепляра вида
a ~ T1, b ~ T2 => C a b ...