-
Notifications
You must be signed in to change notification settings - Fork 260
Description
(Pulling on a loose thread spotted while working on #2881 )
Currently, this module at the top-level is parametrised only by the underlying Carrier telescope {a} {A : Set a}, while its local submodules then take an ambient ('raw') 'equality' relation as an explicit parameter after (the equivalent of) the various RawMagma etc. operations given implicitly.
A breaking (sigh) change would instead be to make the top-level parametrisation wrt (the equivalent of) the RawSetoid a ℓ, ie. {a ℓ} {A : Set a} (_≈_ : Rel A ℓ) (as with Algebra.Definitions and Algebra.Structures), and only then parametrise the local submodules wrt the operations concerned. cf. #2572
Consequences:
- conceptual: equality comes before any of the rest of any algebraic signature
- consistency with
Algebra.DefinitionsandAlgebra.Structures - pragmatic: implicit operation bindings could then be lifted out as
variabledeclarations cf. [ refactor ] usevariables inAlgebra.Consequences.Base#2592 - DRY:
Algebra.Definitionscould be opened once and for all instantiated at_≈_inBase- qualified import of
BaseinAlgebra.Consequences.Setoidcould then be opened once and for all instantiated at_≈_ - the need for the odd use of
hidinggymnastics in [ bug/refactor ] putAlgebra.Consequence.Propositional.sel⇒idemin the right place #2881 is avoided
- ...?
It's (slightly) hard to see how bad the knock-on effects would be for users, but it definitely would rearrange ordering within any explicit binding telescopes at call-/use-sites, so a breaking change, but definitely worth doing for v3.0, I think!