Skip to content

Tracking patches for Monad of No Return #418

Description

@L0neGamer

In #328 we accepted the proposal to eventually remove return from Monad and mappend from Monoid. I've been making progress on the implementation here, 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).

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 on the original proposal)

Packages for general patching (I'll tick when there's a release on hackage!):

  • acid-state-0.16.1.4 - Remove noncanonical definitions. acid-state/acid-state#180
  • alex-meta-0.3.0.13
  • algebra-4.3.1
  • audacity-0.0.2.2
  • backtracking-0.1.0
  • battleship-combinatorics-0.0.1
  • bencode-0.6.1.1
  • binary-search-2.0.0
  • BNFC-meta-0.6.1
  • board-games-0.4.0.1
  • boundingboxes-0.2.3
  • c2hs-0.28.8
  • cgi-3001.5.1.0
  • comfort-graph-0.0.4.1
  • compensated-0.8.3
  • constrained-categories-0.4.2.0
  • control-monad-free-0.6.2
  • copilot-theorem-4.7.1
  • csp-1.4.0
  • data-diverse-4.7.1.0
  • data-inttrie-0.1.4
  • data-msgpack-types-0.0.3
  • djinn-lib-0.0.1.4
  • dockerfile-0.2.0
  • dotgen-0.4.3
  • drifter-0.3.0
  • drinkery-0.4
  • elerea-2.9.0
  • 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
  • explicit-exception-0.2
  • fakedata-1.0.5
  • ghcjs-perch-0.3.3.3
  • 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
  • heist-1.1.1.2
  • hformat-0.3.3.1
  • histogram-fill-0.9.1.0
  • hmatrix-0.20.2
  • HPDF-1.8 - Draw.return: remove method implementation for compatibility with MonadOfNoReturn hsyl20/HPDF#20
  • HTF-0.15.0.2
  • hxt-tagsoup-9.1.4
  • iconv-0.4.1.3
  • invertible-0.2.0.8
  • io-streams-1.5.2.2 - Remove noncanonical definitions snapframework/io-streams#96
  • jmacro-0.6.18
  • json-0.11
  • lattices-2.2.1.1
  • lazyio-0.1.0.4
  • lazyppl-1.0.1
  • lens-family-core-2.1.3
  • libmpd-0.10.0.1
  • mandrill-0.5.8.0
  • matrix-static-0.3
  • MemoTrie-0.6.11
  • midi-0.2.2.4
  • monad-chronicle-1.1.0.1 - MoNR: Remove extraneous method definitions haskellari/these#217
  • monad-resumption-0.1.4.0
  • monad-unlift-ref-0.2.1
  • monoid-transformer-0.0.4
  • multiset-0.3.4.3
  • netwire-5.0.3
  • nondeterminism-1.5
  • non-empty-0.3.5
  • non-empty-sequence-0.2.0.4
  • non-negative-0.1.2
  • optional-args-1.0.2
  • partial-handler-1.0.3
  • pathtype-0.8.1.3
  • persistable-record-0.6.0.6
  • pipes-concurrency-2.0.14
  • pipes-fluid-0.6.0.1
  • plaid-0.1.0.4
  • pooled-io-0.0.2.3
  • probability-0.2.8
  • promises-0.3
  • quickcheck-classes-base-0.6.2.0
  • quickcheck-transformer-0.3.1.2
  • range-set-list-0.1.4.1
  • reactive-midyim-0.4.1.1
  • reform-0.2.7.6
  • regex-applicative-0.3.4
  • rest-rewrite-0.4.5
  • rio-0.1.24.0
  • safe-decimal-0.2.1.0
  • scanner-0.3.1
  • servant-docs-0.13.1
  • set-cover-0.1.1.1
  • shell-conduit-5.0.0
  • socks-0.6.1
  • sqlite-simple-0.4.19.0
  • step-function-0.2.1
  • storablevector-0.2.13.2
  • stringbuilder-0.5.1
  • swagger2-2.9
  • synthesizer-core-0.8.4
  • 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
  • text-region-0.3.1.0
  • timespan-0.4.0.0
  • unagi-chan-0.4.1.4
  • unexceptionalio-0.5.1
  • unicode-0.0.1.1
  • union-find-array-0.1.0.4
  • unique-logic-tf-0.5.1.1
  • varying-0.8.1.0
  • vinyl-0.14.3
  • web-routes-0.27.16
  • wl-pprint-annotated-0.1.0.1
  • wl-pprint-text-1.2.0.2
  • xlsx-1.2.0 - monoid of no mappend, monad of no return qrilka/xlsx#204
  • xml-picklers-0.3.6
  • yi-core-0.19.4
  • yi-rope-0.11

Packages I plan to patch/solve somehow:

Metadata

Metadata

Assignees

No one assigned

    Labels

    metaGeneral questions on CLC rules and policies

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions