@@ -13,7 +13,7 @@
14module Rel8.Table.HKD
14module Rel8.Table.HKD
15 ( HKD( HKD )
15 ( HKD( HKD )
16− , HKDT(..), fromHKD, toHKD, GHKD
16+ , HKDable, fromHKD, toHKD, HKDT(..)
17 , ConstructableHKD
17 , ConstructableHKD
18 , ConstructHKD, constructHKD
18 , ConstructHKD, constructHKD
19 , DeconstructHKD, deconstructHKD
19 , DeconstructHKD, deconstructHKD
@@ -33,11 +33,10 @@ import Prelude
35import Rel8.Aggregate ( Aggregate )
35import Rel8.Aggregate ( Aggregate )
36−import Rel8.Column ( Column )
36+import Rel8.Column ( TColumn )
37import Rel8.Expr ( Expr )
37import Rel8.Expr ( Expr )
38import Rel8.FCF ( Eval, Exp )
38import Rel8.FCF ( Eval, Exp )
39import Rel8.Kind.Algebra ( KnownAlgebra )
39import Rel8.Kind.Algebra ( KnownAlgebra )
40−import qualified Rel8.Kind.Algebra as K
41import Rel8.Generic.Construction
40import Rel8.Generic.Construction
42 ( GGConstructable
41 ( GGConstructable
43 , GGConstruct, ggconstruct
42 , GGConstruct, ggconstruct
@@ -49,9 +48,8 @@ import Rel8.Generic.Construction
49import Rel8.Generic.Map ( GMap, GMappable, gmap, gunmap )
48import Rel8.Generic.Map ( GMap, GMappable, gmap, gunmap )
50import Rel8.Generic.Record ( GRecord, GRecordable, grecord, gunrecord )
49import Rel8.Generic.Record ( GRecord, GRecordable, grecord, gunrecord )
51import Rel8.Generic.Rel8able
50import Rel8.Generic.Rel8able
52− ( Rel8able, Algebra
51+ ( Rel8able
53− , GRep, GColumns, GContext, gfromColumns, gtoColumns
52+ , GColumns, gfromColumns, gtoColumns
54− , GColumnsADT, gfromColumnsADT, gtoColumnsADT
55 , greify, gunreify
53 , greify, gunreify
56 , TUnreifyContext
54 , TUnreifyContext
@@ -59,7 +57,6 @@ import Rel8.Generic.Table
59 ( GGTable, GGColumns, GGContext, ggfromColumns, ggtoColumns
57 ( GGTable, GGColumns, GGContext, ggfromColumns, ggtoColumns
60 , GAlgebra
58 , GAlgebra
62−import qualified Rel8.Generic.Table.ADT as G
63import Rel8.Schema.Context ( Col )
60import Rel8.Schema.Context ( Col )
64import qualified Rel8.Schema.Kind as K
61import qualified Rel8.Schema.Kind as K
65import Rel8.Schema.HTable ( HTable )
62import Rel8.Schema.HTable ( HTable )
@@ -75,10 +72,6 @@ import Rel8.Table
75import Rel8.Table.Serialize ( ToExprs, fromResult, toResult )
72import Rel8.Table.Serialize ( ToExprs, fromResult, toResult )
78−data TColumn :: K.Context -> Type -> Exp Type
79−type instance Eval (TColumn f a) = Column f a
82type GColumnsHKD :: Type -> K.HTable
75type GColumnsHKD :: Type -> K.HTable
83type GColumnsHKD a =
76type GColumnsHKD a =
84 Eval (GGColumns (GAlgebra (Rep a)) TColumns (GRecord (GMap (TColumn (Reify Result)) (Rep a))))
77 Eval (GGColumns (GAlgebra (Rep a)) TColumns (GRecord (GMap (TColumn (Reify Result)) (Rep a))))
@@ -88,53 +81,12 @@ type HKD :: Type -> K.Rel8able
88newtype HKD a f = HKD (GColumnsHKD a (Col f))
81newtype HKD a f = HKD (GColumnsHKD a (Col f))
91−instance GHKD a => Rel8able (HKD a) where
84+instance HKDable a => Rel8able (HKD a) where
92− type Algebra (HKD a) = 'K.Product
94− type GRep (HKD a) f = GRecord (GMap (TColumn f) (Rep a))
96 type GColumns (HKD a) = GColumnsHKD a
85 type GColumns (HKD a) = GColumnsHKD a
97− type GContext (HKD a) context = context
99 gfromColumns = HKD
87 gfromColumns = HKD
100 gtoColumns (HKD a) = a
88 gtoColumns (HKD a) = a
106− @(TTable (Reify Result))
112− @(TTable (Reify Result))
114− @(Col (Reify Result))
115− @(GRep (HKD a) (Reify Result))
122− @(TTable (Reify Result))
124− @(Col (Reify Result))
125− @(GRep (HKD a) (Reify Result))
131− @(TTable (Reify Result))
138 greify (HKD a) = HKD (hreify a)
90 greify (HKD a) = HKD (hreify a)
139 gunreify (HKD a) = HKD (hunreify a)
91 gunreify (HKD a) = HKD (hunreify a)
@@ -189,7 +141,7 @@ newtype HKDT a = HKDT
190 ( Table Expr (HKD a Expr)
142 ( Table Expr (HKD a Expr)
191 , Columns (HKD a Expr) ~ GColumns (HKD a)
143 , Columns (HKD a Expr) ~ GColumns (HKD a)
192− , GHKD a
144+ , HKDable a
193 , x ~ HKD a Expr
145 , x ~ HKD a Expr
195 => ToExprs x (HKDT a)
147 => ToExprs x (HKDT a)
@@ -198,11 +150,11 @@ instance
198 fromResult = HKDT . fromHKD . HKD
150 fromResult = HKDT . fromHKD . HKD
201−fromHKD :: GHKD a => HKD a Result -> a
153+fromHKD :: HKDable a => HKD a Result -> a
202fromHKD = to . gunmap @Top (Proxy @(TColumn Result)) id . from
154fromHKD = to . gunmap @Top (Proxy @(TColumn Result)) id . from
205−toHKD :: GHKD a => a -> HKD a Result
157+toHKD :: HKDable a => a -> HKD a Result
206toHKD = to . gmap @Top (Proxy @(TColumn Result)) id . from
158toHKD = to . gmap @Top (Proxy @(TColumn Result)) id . from
@@ -217,33 +169,27 @@ type instance Eval (Top _) = Top_
218 ( Generic a
170 ( Generic a
219 , HTable (GColumns (HKD a))
171 , HTable (GColumns (HKD a))
220− , HTable (GColumnsADT (HKD a))
221 , KnownAlgebra (GAlgebra (Rep a))
172 , KnownAlgebra (GAlgebra (Rep a))
222 , Eval (GGTable (GAlgebra (Rep a)) (TTable (Reify Result)) TColumns (Col (Reify Result)) (GRecord (GMap (TColumn (Reify Result)) (Rep a))))
173 , Eval (GGTable (GAlgebra (Rep a)) (TTable (Reify Result)) TColumns (Col (Reify Result)) (GRecord (GMap (TColumn (Reify Result)) (Rep a))))
223− , Eval (GGColumns (GAlgebra (Rep a)) TColumns (GRecord (GMap (TColumn (Reify Result)) (Rep a)))) ~ GColumnsHKD a
224 , Eval (GGContext (GAlgebra (Rep a)) TUnreifyContext (GRecord (GMap (TColumn (Reify Result)) (Rep a)))) ~ Result
174 , Eval (GGContext (GAlgebra (Rep a)) TUnreifyContext (GRecord (GMap (TColumn (Reify Result)) (Rep a)))) ~ Result
225− , G.GTableADT (TTable (Reify Result)) TColumns (Col (Reify Result)) (GRecord (GMap (TColumn (Reify Result)) (Rep a)))
226 , GRecordable (GMap (TColumn (Reify Result)) (Rep a))
175 , GRecordable (GMap (TColumn (Reify Result)) (Rep a))
227 , GMappable Top (Rep a)
176 , GMappable Top (Rep a)
228 , GMappable (TTable (Reify Result)) (GMap (TColumn (Reify Result)) (Rep a))
177 , GMappable (TTable (Reify Result)) (GMap (TColumn (Reify Result)) (Rep a))
229 , GMap TUnreify (GMap (TColumn (Reify Result)) (Rep a)) ~ GMap (TColumn Result) (Rep a)
178 , GMap TUnreify (GMap (TColumn (Reify Result)) (Rep a)) ~ GMap (TColumn Result) (Rep a)
231− => GHKD a
180+ => HKDable a
233 ( Generic a
182 ( Generic a
234 , HTable (GColumns (HKD a))
183 , HTable (GColumns (HKD a))
235− , HTable (GColumnsADT (HKD a))
236 , KnownAlgebra (GAlgebra (Rep a))
184 , KnownAlgebra (GAlgebra (Rep a))
237 , Eval (GGTable (GAlgebra (Rep a)) (TTable (Reify Result)) TColumns (Col (Reify Result)) (GRecord (GMap (TColumn (Reify Result)) (Rep a))))
185 , Eval (GGTable (GAlgebra (Rep a)) (TTable (Reify Result)) TColumns (Col (Reify Result)) (GRecord (GMap (TColumn (Reify Result)) (Rep a))))
238− , Eval (GGColumns (GAlgebra (Rep a)) TColumns (GRecord (GMap (TColumn (Reify Result)) (Rep a)))) ~ GColumnsHKD a
239 , Eval (GGContext (GAlgebra (Rep a)) TUnreifyContext (GRecord (GMap (TColumn (Reify Result)) (Rep a)))) ~ Result
186 , Eval (GGContext (GAlgebra (Rep a)) TUnreifyContext (GRecord (GMap (TColumn (Reify Result)) (Rep a)))) ~ Result
240− , G.GTableADT (TTable (Reify Result)) TColumns (Col (Reify Result)) (GRecord (GMap (TColumn (Reify Result)) (Rep a)))
241 , GRecordable (GMap (TColumn (Reify Result)) (Rep a))
187 , GRecordable (GMap (TColumn (Reify Result)) (Rep a))
242 , GMappable Top (Rep a)
188 , GMappable Top (Rep a)
243 , GMappable (TTable (Reify Result)) (GMap (TColumn (Reify Result)) (Rep a))
189 , GMappable (TTable (Reify Result)) (GMap (TColumn (Reify Result)) (Rep a))
244 , GMap TUnreify (GMap (TColumn (Reify Result)) (Rep a)) ~ GMap (TColumn Result) (Rep a)
190 , GMap TUnreify (GMap (TColumn (Reify Result)) (Rep a)) ~ GMap (TColumn Result) (Rep a)
246− => GHKD a
192+ => HKDable a
249type ConstructableHKD :: Type -> Constraint
195type ConstructableHKD :: Type -> Constraint