-
Notifications
You must be signed in to change notification settings - Fork 259
Open
Labels
library-designrefactoringstatus: blocked-by-issueProgress on this issue or PR is blocked by another issue.Progress on this issue or PR is blocked by another issue.
Description
Against #2514 , and continuing to think about #1436 etc., cf. #2318
I think that it might be more ergonomic to refactor Function.Definitions to separate out:
- those
Definitionsparametrised on two equality relations, which would now become top-level module parameters - the
Strictly*definitions, parametrised on a single equality relation, which I would move to a distinct newFunction.Definitions.Strictmodule, again parametrised on the relation (and indeed, the relative importance of these definitions relative to the others has been discussed at length; it feels as though they are 'special', and not for 'everyday' use, except for thePropositionalinstantiation with_≡_inData.Nat.Propertiesetc.) - knock-on consequences:
Function.ConsequencesandAlgebra.Definitions, where in particular, one can immediately instantiate the two relations with the underlying equality of theAlgebra(this would be the ergonomic payoff): eg. rephrasing theCancellativeproperties in terms ofInjectiveetc. cf. RefactorAlgebra.Consequences.*? #2502
Draft PR in preparation.
Potentially breaking, so probably v3.0, but in terms of the overall structure/design of stdlib, I think the shift in parameterisation would be 'harmless', although it might go against the grain of the existing import/dependency structure of Function?
Metadata
Metadata
Assignees
Labels
library-designrefactoringstatus: blocked-by-issueProgress on this issue or PR is blocked by another issue.Progress on this issue or PR is blocked by another issue.