Skip to content

CLC Proposal: Make `($)` fully representation polymorphic

Note I strike out lines that do not apply to this PR

  • are either individually buildable or squashed
  • have commit messages which describe what they do (referring to [Notes][notes] and tickets using #NNNN syntax when appropriate)
  • have added source comments describing your change. For larger changes you likely should add a [Note][notes] and cross-reference it from the relevant places.
  • add a testcase to the testsuite.
  • I have opened an issue at the clc github repo to make ($) fully representation polymorphic and this is the corresponding PR as requested by @Bodigrim
  • I have built GHC 927 with this change and built the clc stackage with it
  • I have corrected all tests that were failing due to this change
  • I have added documentation of the change in strictness as requested by @Bodigrim
  • I have added a changelog entry
  • The proposal has been approved by the CLC https://github.com/haskell/core-libraries-committee/issues/132#issuecomment-1487456854

Warning The proposal introduces potentially breaking changes

as pointed out by @monoidal, ($) will be more strict, i.e. where seq (undefined $) () previously was equal to (), it will now be _|_

this will change how some optimizations happen in some situations, as arity analysis will be affected by this change

Edited by Magnus Viernickel

Merge request reports