Skip to content
  • Georgi Lyubenov's avatar
    Export liftA2 from Prelude · 77209ab3
    Georgi Lyubenov authored
    Changes:
    In order to be warning free and compatible, we hide Applicative(..)
    from Prelude in a few places and instead import it directly from
    Control.Applicative.
    Please see the migration guide at
    https://github.com/haskell/core-libraries-committee/blob/main/guides/export-lifta2-prelude.md
    for more details.
    
    This means that Applicative is now exported in its entirety from
    Prelude.
    
    Motivation:
    
    This change is motivated by a few things:
    * liftA2 is an often used function, even more so than (<*>) for some
      people.
    * When implementing Applicative, the compiler will prompt you for either
      an implementation of (<*>) or of liftA2, but trying to use the latter
      ends with an error, without further imports. This could be confusing
      for newbies.
    * For teaching, it is often times easier to introduce liftA2 first,
      as it is a natural generalisation of fmap.
    * This change seems to have been unanimously and enthusiastically
      accepted by the CLC members, possibly indicating a lot of love for it.
    * This change causes very limited breakage, see the linked issue below
      for an investigation on this.
    
    See https://github.com/haskell/core-libraries-committee/issues/50
    for the surrounding discussion and more details.
    77209ab3