1

GitHub - fumieval/Haskell-breaking-changes

 2 years ago
source link: https://github.com/fumieval/Haskell-breaking-changes
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

This document describes a list of upcoming/proposed changes to Haskell core/de facto libraries.

  • Ongoing: the change is already rolled out.
  • Upcoming: the change is made upstream, and will be released in near future.
  • Planned: the change has been approved by the committee. Implementation is not necessaryly available

Ongoing: Word8#

Upcoming: Remove Control.Monad.Trans.List

Upcoming: Remove Control.Monad.Trans.Error

Upcoming: Monomorphise Data.List

Planned: forall becomes a keyword

  • Summary: 'forall' will become a keyword at the term level
  • Proposal: Visible 'forall' in types of terms
  • ETA: GHC 9.10?
  • Tracking issue: N/A
  • Merge request: N/A
  • Expected breakage: minor (authors of the affected packages were notified)
  • Relevant warnings: -Wforall-identifier (introduced and enabled by default in GHC 9.4)
  • How to fix: Rename identifiers

Planned: remove return from Monad

Planned: remove mappend from Monoid

  • Summary: mappend gets removed from the Monoid class and becomes a top-level function defined as mappend = (<>)
  • Proposal: GHC wiki: semigroup-monoid, related: Enable -Wnoncanonical-monad-instances and -Wnoncanonical-monoid-instances by default
  • ETA: Unknown
  • Tracking issue: N/A
  • Merge request: N/A
  • Expected breakage: major (without an update to the warning)
  • Relevant warnings: -Wnoncanonical-monoid-instances (enabled by default as of GHC 9.2)
  • How to fix: Remove definitions of mappend (compatible up to GHC 8.4)
  • TODO: make -Wnoncanonical-monoid-instances warn manual declarations of mappend

Planned: remove (/=) from the the Eq class

  • Summary: (/=) gets removed from the Eq class and becomes a top-level function defined as a /= b = not (a == b)
  • Proposal: https://github.com/haskell/core-libraries-committee/issues/3
  • ETA: Unknown
  • Tracking issue: N/A
  • Merge request: N/A
  • Expected breakage: 131 packages according to the proposal
  • How to fix: Remove definitions of (/=) (backward-compatible)

Planned: disable StarIsType by default

  • Summary: * will no longer be parsed as a kind of value types (Type).
  • Proposal: https://github.com/ghc-proposals/ghc-proposals/pull/143
  • ETA: Unknown
  • Tracking issue: N/A
  • Merge request: N/A
  • Expected breakage: medium
  • Relevant warnings: -Wstar-is-type
  • How to fix: Replace * with Type (from Data.Kind)

See also


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK