on master help sign in
Rearrange parameters of ggaggregate
45f6f2bShane O'Brien
src/Rel8/Generic/Construction.hs+27−56
@@ -290,11 +290,11 @@ ggname gfromColumns = case algebraSing @algebra of
290type GGAggregate :: K.Algebra -> (K.Context -> Exp (Type -> Type)) -> Type -> Type
290type GGAggregate :: K.Algebra -> (K.Context -> Exp (Type -> Type)) -> Type -> Type
291type family GGAggregate algebra rep r where
291type family GGAggregate algebra rep r where
292 GGAggregate 'K.Product rep r =
292 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
295 GGAggregate 'K.Sum rep r =
295 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
298
298
299
299
300ggaggregate :: forall algebra rep a. GGConstructable algebra rep
300ggaggregate :: forall algebra rep a. GGConstructable algebra rep
@@ -302,7 +302,7 @@ ggaggregate :: forall algebra rep a. GGConstructable algebra rep
302 -> (a -> Eval (GGColumns algebra TColumns (Eval (rep (Reify Result)))) (Col Expr))
302 -> (a -> Eval (GGColumns algebra TColumns (Eval (rep (Reify Result)))) (Col Expr))
303 -> GGAggregate algebra rep (Aggregate a) -> a -> Aggregate a
303 -> GGAggregate algebra rep (Aggregate a) -> a -> Aggregate a
304ggaggregate gfromColumns gtoColumns agg es = case algebraSing @algebra of
304ggaggregate gfromColumns gtoColumns agg es = case algebraSing @algebra of
305− SProduct -> f $
305+ SProduct -> flip f exprs $
306 fmap
306 fmap
307 ( gfromColumns
307 ( gfromColumns
308 . hunreify
308 . hunreify
@@ -317,17 +317,10 @@ ggaggregate gfromColumns gtoColumns agg es = case algebraSing @algebra of
317 liftF½ .
317 liftF½ .
318 gtraverse @TUnreify @(Eval (rep (Reify Expr))) @_ @Aggregate (MaybeApply . Left)
318 gtraverse @TUnreify @(Eval (rep (Reify Expr))) @_ @Aggregate (MaybeApply . Left)
319 where
319 where
320− f =
320+ f =
321− gindex
322− @TUnreify
323− @(Eval (rep (Reify Expr)))
324− @(GConstruct (Compose Aggregate TUnreify) (Eval (rep (Reify Expr))) (Aggregate a) -> Aggregate a)
321+ gindex @TUnreify @(Eval (rep (Reify Expr))) @(Aggregate a) .
325− agg
322+ agg .
326− exprs .
327− gtabulate
328− @(Compose Aggregate TUnreify)
323+ gtabulate @(Compose Aggregate TUnreify) @(Eval (rep (Reify Expr))) @(Aggregate a)
329− @(Eval (rep (Reify Expr)))
330− @(Aggregate a)
331 exprs =
324 exprs =
332 gdeconstruct
325 gdeconstruct
333 @(TTable (Reify Expr))
326 @(TTable (Reify Expr))
@@ -338,8 +331,7 @@ ggaggregate gfromColumns gtoColumns agg es = case algebraSing @algebra of
338 (\(_ :: proxy x) -> unreify @_ @x Refl . fromColumns) $
331 (\(_ :: proxy x) -> unreify @_ @x Refl . fromColumns) $
339 hreify $
332 hreify $
340 gtoColumns es
333 gtoColumns es
341−
342− SSum -> f exprs $
334+ SSum -> flip f exprs $
343 liftF1½
335 liftF1½
344 (\tag' ->
336 (\tag' ->
345 gfromColumns .
337 gfromColumns .
@@ -357,17 +349,10 @@ ggaggregate gfromColumns gtoColumns agg es = case algebraSing @algebra of
357 (groupByExpr tag) .
349 (groupByExpr tag) .
358 gftraverse @TUnreify @(Eval (rep (Reify Expr))) @_ @Aggregate (MaybeApply . Left)
350 gftraverse @TUnreify @(Eval (rep (Reify Expr))) @_ @Aggregate (MaybeApply . Left)
359 where
351 where
360− f e =
352+ f =
361− gfindex
362− @TUnreify
363− @(Eval (rep (Reify Expr)))
364− @(GBuildADT (Compose Aggregate TUnreify) (Eval (rep (Reify Expr))) (Aggregate a) -> Aggregate a)
353+ gfindex @TUnreify @(Eval (rep (Reify Expr))) @(Aggregate a) .
365− agg
354+ agg .
366− e .
367− gftabulate
368− @(Compose Aggregate TUnreify)
355+ gftabulate @(Compose Aggregate TUnreify) @(Eval (rep (Reify Expr))) @(Aggregate a)
369− @(Eval (rep (Reify Expr)))
370− @(Aggregate a)
371 (HType (Reify (DB tag)), exprs) =
356 (HType (Reify (DB tag)), exprs) =
372 gunbuildADT
357 gunbuildADT
373 @(TTable (Reify Expr))
358 @(TTable (Reify Expr))
@@ -386,11 +371,11 @@ ggaggregate gfromColumns gtoColumns agg es = case algebraSing @algebra of
386type GGAggregate' :: K.Algebra -> (K.Context -> Exp (Type -> Type)) -> Type -> Type
371type GGAggregate' :: K.Algebra -> (K.Context -> Exp (Type -> Type)) -> Type -> Type
387type family GGAggregate' algebra rep r where
372type family GGAggregate' algebra rep r where
388 GGAggregate' 'K.Product rep r =
373 GGAggregate' 'K.Product rep r =
389− GConstruct TUnreify (Eval (rep (Reify Expr)))
374+ GConstruct TUnreify (Eval (rep (Reify Aggregate))) r ->
390− (GConstruct TUnreify (Eval (rep (Reify Aggregate))) r -> r)
375+ GConstruct TUnreify (Eval (rep (Reify Expr))) r
391 GGAggregate' 'K.Sum rep r =
376 GGAggregate' 'K.Sum rep r =
392− GBuildADT TUnreify (Eval (rep (Reify Expr)))
377+ GBuildADT TUnreify (Eval (rep (Reify Aggregate))) r ->
393− (GBuildADT TUnreify (Eval (rep (Reify Aggregate))) r -> r)
378+ GBuildADT TUnreify (Eval (rep (Reify Expr))) r
394
379
395
380
396ggaggregate' :: forall algebra rep exprs agg. GGConstructable algebra rep
381ggaggregate' :: forall algebra rep exprs agg. GGConstructable algebra rep
@@ -398,7 +383,7 @@ ggaggregate' :: forall algebra rep exprs agg. GGConstructable algebra rep
398 -> (exprs -> Eval (GGColumns algebra TColumns (Eval (rep (Reify Result)))) (Col Expr))
383 -> (exprs -> Eval (GGColumns algebra TColumns (Eval (rep (Reify Result)))) (Col Expr))
399 -> GGAggregate' algebra rep agg -> exprs -> agg
384 -> GGAggregate' algebra rep agg -> exprs -> agg
400ggaggregate' gfromColumns gtoColumns agg es = case algebraSing @algebra of
385ggaggregate' gfromColumns gtoColumns agg es = case algebraSing @algebra of
401− SProduct -> f $
386+ SProduct -> flip f exprs $
402 gfromColumns .
387 gfromColumns .
403 hunreify .
388 hunreify .
404 gconstruct
389 gconstruct
@@ -410,16 +395,9 @@ ggaggregate' gfromColumns gtoColumns agg es = case algebraSing @algebra of
410 (\(_ :: proxy x) -> toColumns . reify @_ @x Refl)
395 (\(_ :: proxy x) -> toColumns . reify @_ @x Refl)
411 where
396 where
412 f =
397 f =
413− gindex
414− @TUnreify
415− @(Eval (rep (Reify Expr)))
398+ gindex @TUnreify @(Eval (rep (Reify Expr))) @agg .
416− @(GConstruct TUnreify (Eval (rep (Reify Aggregate))) agg -> agg)
417− agg
399+ agg .
418− exprs .
419− gtabulate
420− @TUnreify
421− @(Eval (rep (Reify Aggregate)))
400+ gtabulate @TUnreify @(Eval (rep (Reify Aggregate))) @agg
422− @agg
423 exprs =
401 exprs =
424 gdeconstruct
402 gdeconstruct
425 @(TTable (Reify Expr))
403 @(TTable (Reify Expr))
@@ -430,7 +408,7 @@ ggaggregate' gfromColumns gtoColumns agg es = case algebraSing @algebra of
430 (\(_ :: proxy x) -> unreify @_ @x Refl . fromColumns) $
408 (\(_ :: proxy x) -> unreify @_ @x Refl . fromColumns) $
431 hreify $
409 hreify $
432 gtoColumns es
410 gtoColumns es
433− SSum -> f exprs $
411+ SSum -> flip f exprs $
434 gfromColumns .
412 gfromColumns .
435 hunreify .
413 hunreify .
436 gbuildADT
414 gbuildADT
@@ -444,17 +422,10 @@ ggaggregate' gfromColumns gtoColumns agg es = case algebraSing @algebra of
444 Reify $ Aggregation $ runTag nullity (tag ==. litExpr tag') <$> a)
422 Reify $ Aggregation $ runTag nullity (tag ==. litExpr tag') <$> a)
445 (HType (Reify (Aggregation (groupByExpr tag))))
423 (HType (Reify (Aggregation (groupByExpr tag))))
446 where
424 where
447− f e =
425+ f =
448− gfindex
449− @TUnreify
450− @(Eval (rep (Reify Expr)))
426+ gfindex @TUnreify @(Eval (rep (Reify Expr))) @agg .
451− @(GBuildADT TUnreify (Eval (rep (Reify Aggregate))) agg -> agg)
452− agg
427+ agg .
453− e .
454− gftabulate
455− @TUnreify
456− @(Eval (rep (Reify Aggregate)))
428+ gftabulate @TUnreify @(Eval (rep (Reify Aggregate))) @agg
457− @agg
458 (HType (Reify (DB tag)), exprs) =
429 (HType (Reify (DB tag)), exprs) =
459 gunbuildADT
430 gunbuildADT
460 @(TTable (Reify Expr))
431 @(TTable (Reify Expr))