-
Notifications
You must be signed in to change notification settings - Fork 247
initial+terminal algebras #1902
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Very nice! A few remarks:
I don't think you need to change anything for this PR. You can if you think the result will be improved, but it's really unclear if that would indeed be the case. |
Many thanks for the review and the suggestions regarding modularisation. I really wanted a DRY solution to all the repetition of the basic record structure, but I find the concrete syntax and semantics of these things hard to get my head round. Ideally I would have liked to reify the private module UPDATED: now everything in the module As for defns of initial algebras on the empty carrier, I hope the present ones suffice. I wasn't really sure I could think of other ones which short-cut so much (though that's as nothing to the gain from eta-expansion of the unit type in the terminal case...) |
Re; rationale for the PR. EDITED: moved this to a distinct issue #1906, which can be tracked and closed by this (or similar) PR. Hopefully that makes my intentions a bit clearer. |
… branch/PR Revert "`CHANGELOG`" This reverts commit e54f2a7.
Modulo discussion of @MatthewDaggitt 's concerns about deprecation/backwards compatibility, I think this is ready to go. But I'd like to clarify those issues before starting work on a PR towards fixing #1907 |
Okay once the two outstanding conversations have been resolved, I'm happy to merge this. |
Final tweaks to remove |
Refactored
Algebra.Construct.Zero
intoAlgebra.Construct.Initial
Algebra.Construct.Terminal
and fixed up the public (re-)imports of the second into
Algebra.Construct.Zero
(for backwards compatibility), while deprecating the occurrences of the non-initial terminal algebras in favour of their counterparts inAlgebra.Construct.Terminal
.Also: amended
Algebra.Module.Construct.Zero
with commented-out hooks for the variousRaw
bundles associated with module-like algebras, pending the resolution of issue #1828One wrinkle: I wanted to abstract out all the common structure, so i did that in each module via an additional private module, that nevertheless is
open
ed into order to make the definitions (transparently) visible. But I may have got myprivate
/public
modifiers a bit mixed up. My concern is whether by making the internal modulesprivate
, I somehow fail to transparently export the definitions inside the publicly exported (raw) bundles, so that no actually reasoning is possible with them. But barring this wrinkle (fixable by removing theprivate
modifiers), I think this one is now ready to go.