Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Documentation
type family SumFields' (fields :: [ConstructorInfo]) (ass :: [[Type]]) :: [ProductField] where ... Source #
SumFields' '[] '[] = '[] | |
SumFields' ('Record name fields ': cons) (as ': ass) = 'ProductField name (ConCol name 'True (RecordFields fields as) as) ': SumFields' cons ass | |
SumFields' ('Constructor name ': cons) (as ': ass) = 'ProductField name (ConCol name 'False (ConstructorFields name 0 as) as) ': SumFields' cons ass | |
SumFields' ('Infix conName _ _ ': _) _ = TypeError ("Infix constructor not supported: " <> conName) |
type family SumFields (info :: DatatypeInfo) (ass :: [[Type]]) :: [ProductField] where ... Source #
class DdType s ~ a => SumWith a isel imods arg s | a isel imods arg -> s where Source #
Instances
(b ~ a, CompName a ('TSel prefix name), fields ~ SumFields (GDatatypeInfoOf a) (GCode a), meta ~ MetaFor "sum type" ('ShowType a) "sum", CompColumn meta fields a arg s) => SumWith b isel imods arg ('DdK 'SelAuto (NoMods :: [Type]) a ('Comp ('TSel prefix name) 'Sum 'Nest ('DdK isel imods Int64 'Prim ': s))) Source # | |
class DdType s ~ a => Sum a arg s | a arg -> s where Source #
Instances
(b ~ a, CompName a ('TSel prefix name), IndexName 'DefaultPrefix name iname, fields ~ SumFields (GDatatypeInfoOf a) (GCode a), meta ~ MetaFor "sum type" ('ShowType a) "sum", CompColumn meta fields a arg s) => Sum b arg ('DdK 'SelAuto (NoMods :: [Type]) a ('Comp ('TSel prefix name) 'Sum 'Nest (IndexColumn name ': s))) Source # | |
sumAs :: forall (name :: Symbol) (a :: Type) (s :: DdK) (arg :: Type). Sum a arg s => Rename s (SetName s name) => arg -> Dd (SetName s name) Source #
mergeSum :: forall (a :: Type) (s :: DdK) (arg :: Type). Sum a arg s => arg -> Dd (Merge s) Source #
class DdType s ~ a => ConColumn a arg s | a arg -> s where Source #
Instances
(a ~ ConCol name record fields as, MkTSel ('TSel 'DefaultPrefix name), meta ~ MetaFor "constructor" ('Text name) "con", CompColumn meta fields a arg s) => ConColumn a arg ('DdK 'SelAuto (NoMods :: [Type]) (ConCol name record fields as) ('Comp ('TSel 'DefaultPrefix name) ('Prod ('Con as)) 'Nest s)) Source # | |
conAs :: forall (name :: Symbol) (a :: Type) (s :: DdK) (arg :: Type). ConColumn a arg s => Rename s (SetName s name) => arg -> Dd (SetName s name) Source #
type family Con1Fields (con :: Type) :: [ProductField] where ... Source #
Con1Fields (ConCol _ 'True '[f] _) = '[f] | |
Con1Fields (ConCol name 'False '['ProductField _ a] _) = '['ProductField name a] |
class DdType s ~ a => Con1Column a arg s | a arg -> s where Source #
Instances
(a ~ ConCol name record fields as, TypeName 'DefaultPrefix name tname, meta ~ MetaFor "constructor" ('Text name) "con1", CompColumn meta (Con1Fields a) a arg s) => Con1Column a arg ('DdK 'SelAuto (NoMods :: [Type]) (ConCol name record fields as) ('Comp ('TSel 'DefaultPrefix name) ('Prod ('Con as)) 'Merge s)) Source # | |
type family RenameCon1 (name :: Symbol) (a :: Type) :: Type where ... Source #
RenameCon1 name (ConCol _ record '['ProductField _ a] as) = ConCol name record '['ProductField name a] as | |
RenameCon1 _ a = TypeError ("RenameCon1:" % a) |
class DdType s ~ a => Con1AsColumn name a arg s | name a arg -> s where Source #
Instances
(a ~ ConCol _name record _fields as, TypeName 'DefaultPrefix name tname, fields ~ Con1Fields (RenameCon1 name a), meta ~ MetaFor "constructor" ('Text name) "con1As", CompColumn meta fields a arg s) => Con1AsColumn (name :: Symbol) a arg ('DdK 'SelAuto (NoMods :: [Type]) a ('Comp ('TSel 'DefaultPrefix name) ('Prod ('Con as)) 'Merge s)) Source # | |
class SetIndexPrefix prefix s0 s1 | prefix s0 -> s1 where Source #
setIndexPrefix :: Dd s0 -> Dd s1 Source #
indexPrefix :: forall prefix s0 s1. SetIndexPrefix prefix s0 s1 => Dd s0 -> Dd s1 Source #