haskell / haskell/core-libraries-committee

Tracking patches for Monad of No Return

Open
#418 12 comments 12 reactions 0 assignees View on GitHub
meta
Dominant language
Haskell
Stars
109
Forks
20
PR merge metrics
No merged PRs in 30d

Description

In https://github.com/haskell/core-libraries-committee/issues/328 we accepted the proposal to eventually remove `return` from `Monad` and `mappend` from `Monoid`. I've been making progress on the implementation [here](https://gitlab.haskell.org/ghc/ghc/-/merge_requests/15795), and thought I should check how much of clc-stackage was broken.

In short, a lot of it.

The good news is I have patches for all ~148 packages that are needed to get stackage back on its feet.

The bad news is that these patches now have to be submitted to each package, reviewed, accepted, and uploaded to hackage to ensure a smooth transfer.

This is why I've made this issue: to track how many packages have had patches submitted; and to **ask for help in submitting patches to all these packages** ([discourse post](https://discourse.haskell.org/t/monad-of-no-return-the-great-patchening/14207)).

Here is a huge file with the vast majority of the patches; there are 24 or so not included in this file I will manage by myself (since I was doing them fully manually before a certain point): https://gist.github.com/L0neGamer/3df4008fd458030cf3cf2c374ccfa3ec

I urge those that submit patches to review them and make sure they make sense for the context of the project they are in. I did not ensure that these patches were well made or made sense for the full support window of each package, I only ensured that they worked for `ghc-9.12.4` with my MONR changes.

When making your patches, bear the following tidbits in mind:
- The aim is to remove all definitions of `return` and `mappend`, and make sure all definitions of `pure` and `(<>)` don't simply refer to `return` and `mappend`
- Semigroup was introduced in `base-4.9.0.0`, and only became a superclass of Monoid in `base-4.11.0.0`. Thus patches for packages that cover that range of versions must add CPP to remove the `mappend` definition after `base-4.11.0.0`
- Applicative was introduced as a superclass of Monad in `base-4.8.0.0`. Thus patches for packages that cover that range of versions must add CPP to remove the `return` definition after `base-4.8.0.0`
- Ideally even canonical definitions (of `return = pure` and `mappend = (<>)`) should be removed so that in later stages we don't have more breakage
- If you do help me patch these (thank you!) let me know so I can tick an item off the list and link to the patch for further tracking

_(addendum: removing canonical definitions is also a good idea as we go. for a previous search for these changes, please see [rhendric's comment](https://github.com/haskell/core-libraries-committee/issues/328#issuecomment-2874130488) on the original proposal)_

Packages for general patching (I'll tick when there's a release on hackage!):
- [ ] acid-state-0.16.1.4 - https://github.com/acid-state/acid-state/pull/180
- [ ] alex-meta-0.3.0.13
- [ ] algebra-4.3.1
- [x] audacity-0.0.2.2
- [ ] backtracking-0.1.0
- [x] battleship-combinatorics-0.0.1
- [ ] bencode-0.6.1.1
- [ ] binary-search-2.0.0
- [ ] BNFC-meta-0.6.1
- [x] board-games-0.4.0.1
- [ ] boundingboxes-0.2.3 - _deprioritised, too old_
- [ ] c2hs-0.28.8
- [ ] cgi-3001.5.1.0
- [x] comfort-graph-0.0.4.1
- [ ] compensated-0.8.3
- [ ] constrained-categories-0.4.2.0 - https://github.com/leftaroundabout/constrained-categories/pull/11
- [ ] control-monad-free-0.6.2 - _deprioritised, too old_
- [ ] copilot-theorem-4.7.1
- [ ] csp-1.4.0 - _deprioritised, too old_
- [ ] data-diverse-4.7.1.0
- [ ] data-inttrie-0.1.4 - _deprioritised, too old_
- [ ] data-msgpack-types-0.0.3
- [ ] djinn-lib-0.0.1.4
- [ ] dockerfile-0.2.0
- [ ] dotgen-0.4.3
- [ ] drifter-0.3.0 - https://github.com/AndrewRademacher/drifter/pull/10
- [ ] drinkery-0.4
- [ ] elerea-2.9.0
- [x] enumset-0.1
- [ ] errors-2.3.0
- [ ] essence-of-live-coding-0.2.9
- [ ] exact-pi-0.5.0.2
- [ ] expiring-cache-map-0.0.6.1
- [x] explicit-exception-0.2
- [ ] fakedata-1.0.5
- [ ] ghcjs-perch-0.3.3.3 - _deprioritised, too old_
- [ ] gloss-rendering-1.13.2.1
- [ ] graphite-0.10.0.1
- [ ] graphviz-2999.20.2.1
- [ ] happstack-server-7.9.3
- [ ] happy-meta-0.2.1.0
- [ ] heap-1.0.4 - _deprioritised, too old_
- [ ] heist-1.1.1.2
- [ ] hformat-0.3.3.1 - _deprioritised, too old_
- [ ] histogram-fill-0.9.1.0
- [ ] hmatrix-0.20.2
- [ ] HPDF-1.8 - https://github.com/hsyl20/HPDF/pull/20
- [ ] HTF-0.15.0.2
- [ ] hxt-tagsoup-9.1.4 - https://github.com/UweSchmidt/hxt/pull/103
- [ ] iconv-0.4.1.3
- [ ] invertible-0.2.0.8 - https://github.com/dylex/invertible/pull/6
- [ ] io-streams-1.5.2.2 - https://github.com/snapframework/io-streams/pull/96
- [ ] jmacro-0.6.18
- [ ] json-0.11 - https://github.com/GaloisInc/json/pull/20
- [ ] lattices-2.2.1.1
- [x] lazyio-0.1.0.4
- [ ] lazyppl-1.0.1
- [ ] lens-family-core-2.1.3
- [ ] libmpd-0.10.0.1 - https://github.com/vimus/libmpd-haskell/pull/148
- [ ] mandrill-0.5.8.0
- [ ] matrix-static-0.3
- [ ] MemoTrie-0.6.11 - https://github.com/conal/MemoTrie/pull/29
- [x] midi-0.2.2.4
- [ ] monad-chronicle-1.1.0.1 - https://github.com/haskellari/these/pull/217
- [ ] monad-resumption-0.1.4.0 - https://github.com/igraves/monad-resumption/pull/4
- [ ] monad-unlift-ref-0.2.1 - _deprioritised, too old_
- [x] monoid-transformer-0.0.4
- [ ] multiset-0.3.4.3
- [ ] netwire-5.0.3 - _deprioritised, too old_
- [ ] nondeterminism-1.5 - https://github.com/abarbu/nondeterminism-haskell/pull/3
- [x] non-empty-0.3.5
- [ ] non-empty-sequence-0.2.0.4
- [x] non-negative-0.1.2
- [ ] optional-args-1.0.2 - https://github.com/Gabriella439/Haskell-Optional-Args-Library/pull/7
- [ ] partial-handler-1.0.3
- [x] pathtype-0.8.1.3
- [ ] persistable-record-0.6.0.6
- [ ] pipes-concurrency-2.0.14
- [ ] pipes-fluid-0.6.0.1 - _deprioritised, too old_
- [ ] plaid-0.1.0.4
- [x] pooled-io-0.0.2.3
- [x] probability-0.2.8
- [ ] promises-0.3
- [ ] quickcheck-classes-base-0.6.2.0 - https://github.com/andrewthad/quickcheck-classes/pull/141
- [x] quickcheck-transformer-0.3.1.2
- [ ] range-set-list-0.1.4.1 - _won't update yet, maintainer not wanting patches_
- [x] reactive-midyim-0.4.1.1
- [ ] reform-0.2.7.6 - https://github.com/Happstack/reform/pull/9
- [ ] regex-applicative-0.3.4
- [ ] rest-rewrite-0.4.5
- [x] rio-0.1.24.0 - https://github.com/commercialhaskell/rio/commit/d673457803c33b4027f4616b3728bd6da3c26c72
- [ ] safe-decimal-0.2.1.0
- [ ] scanner-0.3.1 - https://github.com/Yuras/scanner/pull/15
- [ ] servant-docs-0.13.1 - https://github.com/haskell-servant/servant/pull/1896
- [x] set-cover-0.1.1.1
- [ ] shell-conduit-5.0.0
- [ ] socks-0.6.1 - _vincenthz package, unlikely to be patched_
- [ ] sqlite-simple-0.4.19.0
- [ ] step-function-0.2.1 - https://github.com/jonpetterbergman/step-function/pull/19
- [x] storablevector-0.2.13.2
- [ ] stringbuilder-0.5.1 - _deprioritised, too old_
- [ ] swagger2-2.9
- [x] synthesizer-core-0.8.4
- [x] synthesizer-dimensional-0.8.1.1
- [ ] system-filepath-0.4.14.1
- [ ] tdigest-0.3.1
- [ ] text-latin1-0.3.1
- [ ] text-printer-0.5.0.2 - https://github.com/mvv/text-printer/pull/5
- [ ] text-region-0.3.1.0 - https://github.com/mvoidex/text-region/pull/3
- [ ] timespan-0.4.0.0 - https://github.com/agrafix/timespan/pull/2
- [ ] unagi-chan-0.4.1.4
- [ ] unexceptionalio-0.5.1
- [x] unicode-0.0.1.1
- [x] union-find-array-0.1.0.4 - https://github.com/haskell-rewriting/union-find-array/pull/7
- [x] unique-logic-tf-0.5.1.1
- [ ] varying-0.8.1.0
- [ ] vinyl-0.14.3
- [ ] web-routes-0.27.16 - https://github.com/Happstack/web-routes/pull/8
- [ ] wl-pprint-annotated-0.1.0.1 - https://github.com/minad/wl-pprint-annotated/pull/13
- [ ] wl-pprint-text-1.2.0.2 - https://github.com/ivan-m/wl-pprint-text/pull/33
- [x] xlsx-1.2.0 - https://github.com/qrilka/xlsx/pull/204
- [ ] xml-picklers-0.3.6 - _deprioritised, too old_
- [ ] yi-core-0.19.4
- [ ] yi-rope-0.11 - _deprioritised, too old_

Packages I plan to patch/solve somehow:

- [ ] blaze-markup - https://github.com/jaspervdj/blaze-markup/pull/71
- [ ] case-insensitive - https://github.com/basvandijk/case-insensitive/pull/37
- [ ] Earley - https://github.com/ollef/Earley/pull/65
- [x] fmlist - https://github.com/sjoerdvisscher/fmlist/pull/16
- [ ] generic-data - https://github.com/Lysxia/generic-data/pull/78
- [ ] Haskell-Errors-Library - https://github.com/Gabriella439/Haskell-Errors-Library/pull/64
- [ ] haskell-src-exts - https://github.com/haskell-suite/haskell-src-exts/pull/481
- [ ] HCodecs - https://github.com/Mokosha/HCodecs/pull/3
- [ ] hs-asn1/data - _package archived_
- [ ] hs-asn1/encoding - _package archived_
- [ ] hs-asn1/parse - _package archived_
- [ ] hs-hourglass - _package archived_
- [ ] List - _last updated 9 years ago, no repo, deprioritised_
- [ ] ListTree - _last updated 10 years ago, no repo, deprioritised_
- [ ] MonadPrompt - _last updated 12 years ago, no repo, deprioritised_
- [ ] OpenGL - https://github.com/haskell-opengl/OpenGL/pull/102
- [ ] operational - https://github.com/HeinrichApfelmus/operational/pull/35
- [ ] ordered-containers - https://github.com/dmwit/ordered-containers/pull/37
- [ ] process-extras - https://github.com/seereason/process-extras/pull/22
- [ ] RefSerialize - _last updated 9 years ago, no repo, deprioritised_
- [ ] semialign - https://github.com/haskellari/these/pull/217
- [ ] Stream - _last updated 12 years ago, no repo, deprioritised_
- [ ] strict - https://github.com/haskellari/strict/pull/50
- [ ] these - https://github.com/haskellari/these/pull/217

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.