on master help sign in
Rearrange parameters of ggaggregate
commit45f6f2b862227df4a65c8cbaf6a8e80bb7024ef4 authorShane O'Brien <shane.obrien@circuithub.com> dateWed 5 May 2021, 02:20 (6 years ago) parentcf8bdc7
1 file changed+27−56
src/Rel8/Generic/Construction.hs+27−56
src/Rel8/Generic/Construction.hs+27−56
@@ -290,11 +290,11 @@ ggname gfromColumns = case algebraSing @algebra of
290290type GGAggregate :: K.Algebra -> (K.Context -> Exp (Type -> Type)) -> Type -> Type
291291type family GGAggregate algebra rep r where
292292 GGAggregate 'K.Product rep r =
293− GConstruct TUnreify (Eval (rep (Reify Expr)))
294− (GConstruct (Compose Aggregate TUnreify) (Eval (rep (Reify Expr))) r -> r)
293+ GConstruct (Compose Aggregate TUnreify) (Eval (rep (Reify Expr))) r ->
294+ GConstruct TUnreify (Eval (rep (Reify Expr))) r
295295 GGAggregate 'K.Sum rep r =
296− GBuildADT TUnreify (Eval (rep (Reify Expr)))
297− (GBuildADT (Compose Aggregate TUnreify) (Eval (rep (Reify Expr))) r -> r)
296+ GBuildADT (Compose Aggregate TUnreify) (Eval (rep (Reify Expr))) r ->
297+ GBuildADT TUnreify (Eval (rep (Reify Expr))) r
298298
299299
300300ggaggregate :: forall algebra rep a. GGConstructable algebra rep
@@ -302,7 +302,7 @@ ggaggregate :: forall algebra rep a. GGConstructable algebra rep
302302 -> (a -> Eval (GGColumns algebra TColumns (Eval (rep (Reify Result)))) (Col Expr))
303303 -> GGAggregate algebra rep (Aggregate a) -> a -> Aggregate a
304304ggaggregate gfromColumns gtoColumns agg es = case algebraSing @algebra of
305− SProduct -> f $
305+ SProduct -> flip f exprs $
306306 fmap
307307 ( gfromColumns
308308 . hunreify
@@ -317,17 +317,10 @@ ggaggregate gfromColumns gtoColumns agg es = case algebraSing @algebra of
317317 liftF½ .
318318 gtraverse @TUnreify @(Eval (rep (Reify Expr))) @_ @Aggregate (MaybeApply . Left)
319319 where
320− f =
321− gindex
322− @TUnreify
323− @(Eval (rep (Reify Expr)))
324− @(GConstruct (Compose Aggregate TUnreify) (Eval (rep (Reify Expr))) (Aggregate a) -> Aggregate a)
325− agg
326− exprs .
327− gtabulate
328− @(Compose Aggregate TUnreify)
329− @(Eval (rep (Reify Expr)))
330− @(Aggregate a)
320+ f =
321+ gindex @TUnreify @(Eval (rep (Reify Expr))) @(Aggregate a) .
322+ agg .
323+ gtabulate @(Compose Aggregate TUnreify) @(Eval (rep (Reify Expr))) @(Aggregate a)
331324 exprs =
332325 gdeconstruct
333326 @(TTable (Reify Expr))
@@ -338,8 +331,7 @@ ggaggregate gfromColumns gtoColumns agg es = case algebraSing @algebra of
338331 (\(_ :: proxy x) -> unreify @_ @x Refl . fromColumns) $
339332 hreify $
340333 gtoColumns es
341−
342− SSum -> f exprs $
334+ SSum -> flip f exprs $
343335 liftF1½
344336 (\tag' ->
345337 gfromColumns .
@@ -357,17 +349,10 @@ ggaggregate gfromColumns gtoColumns agg es = case algebraSing @algebra of
357349 (groupByExpr tag) .
358350 gftraverse @TUnreify @(Eval (rep (Reify Expr))) @_ @Aggregate (MaybeApply . Left)
359351 where
360− f e =
361− gfindex
362− @TUnreify
363− @(Eval (rep (Reify Expr)))
364− @(GBuildADT (Compose Aggregate TUnreify) (Eval (rep (Reify Expr))) (Aggregate a) -> Aggregate a)
365− agg
366− e .
367− gftabulate
368− @(Compose Aggregate TUnreify)
369− @(Eval (rep (Reify Expr)))
370− @(Aggregate a)
352+ f =
353+ gfindex @TUnreify @(Eval (rep (Reify Expr))) @(Aggregate a) .
354+ agg .
355+ gftabulate @(Compose Aggregate TUnreify) @(Eval (rep (Reify Expr))) @(Aggregate a)
371356 (HType (Reify (DB tag)), exprs) =
372357 gunbuildADT
373358 @(TTable (Reify Expr))
@@ -386,11 +371,11 @@ ggaggregate gfromColumns gtoColumns agg es = case algebraSing @algebra of
386371type GGAggregate' :: K.Algebra -> (K.Context -> Exp (Type -> Type)) -> Type -> Type
387372type family GGAggregate' algebra rep r where
388373 GGAggregate' 'K.Product rep r =
389− GConstruct TUnreify (Eval (rep (Reify Expr)))
390− (GConstruct TUnreify (Eval (rep (Reify Aggregate))) r -> r)
374+ GConstruct TUnreify (Eval (rep (Reify Aggregate))) r ->
375+ GConstruct TUnreify (Eval (rep (Reify Expr))) r
391376 GGAggregate' 'K.Sum rep r =
392− GBuildADT TUnreify (Eval (rep (Reify Expr)))
393− (GBuildADT TUnreify (Eval (rep (Reify Aggregate))) r -> r)
377+ GBuildADT TUnreify (Eval (rep (Reify Aggregate))) r ->
378+ GBuildADT TUnreify (Eval (rep (Reify Expr))) r
394379
395380
396381ggaggregate' :: forall algebra rep exprs agg. GGConstructable algebra rep
@@ -398,7 +383,7 @@ ggaggregate' :: forall algebra rep exprs agg. GGConstructable algebra rep
398383 -> (exprs -> Eval (GGColumns algebra TColumns (Eval (rep (Reify Result)))) (Col Expr))
399384 -> GGAggregate' algebra rep agg -> exprs -> agg
400385ggaggregate' gfromColumns gtoColumns agg es = case algebraSing @algebra of
401− SProduct -> f $
386+ SProduct -> flip f exprs $
402387 gfromColumns .
403388 hunreify .
404389 gconstruct
@@ -410,16 +395,9 @@ ggaggregate' gfromColumns gtoColumns agg es = case algebraSing @algebra of
410395 (\(_ :: proxy x) -> toColumns . reify @_ @x Refl)
411396 where
412397 f =
413− gindex
414− @TUnreify
415− @(Eval (rep (Reify Expr)))
416− @(GConstruct TUnreify (Eval (rep (Reify Aggregate))) agg -> agg)
417− agg
418− exprs .
419− gtabulate
420− @TUnreify
421− @(Eval (rep (Reify Aggregate)))
422− @agg
398+ gindex @TUnreify @(Eval (rep (Reify Expr))) @agg .
399+ agg .
400+ gtabulate @TUnreify @(Eval (rep (Reify Aggregate))) @agg
423401 exprs =
424402 gdeconstruct
425403 @(TTable (Reify Expr))
@@ -430,7 +408,7 @@ ggaggregate' gfromColumns gtoColumns agg es = case algebraSing @algebra of
430408 (\(_ :: proxy x) -> unreify @_ @x Refl . fromColumns) $
431409 hreify $
432410 gtoColumns es
433− SSum -> f exprs $
411+ SSum -> flip f exprs $
434412 gfromColumns .
435413 hunreify .
436414 gbuildADT
@@ -444,17 +422,10 @@ ggaggregate' gfromColumns gtoColumns agg es = case algebraSing @algebra of
444422 Reify $ Aggregation $ runTag nullity (tag ==. litExpr tag') <$> a)
445423 (HType (Reify (Aggregation (groupByExpr tag))))
446424 where
447− f e =
448− gfindex
449− @TUnreify
450− @(Eval (rep (Reify Expr)))
451− @(GBuildADT TUnreify (Eval (rep (Reify Aggregate))) agg -> agg)
452− agg
453− e .
454− gftabulate
455− @TUnreify
456− @(Eval (rep (Reify Aggregate)))
457− @agg
425+ f =
426+ gfindex @TUnreify @(Eval (rep (Reify Expr))) @agg .
427+ agg .
428+ gftabulate @TUnreify @(Eval (rep (Reify Aggregate))) @agg
458429 (HType (Reify (DB tag)), exprs) =
459430 gunbuildADT
460431 @(TTable (Reify Expr))