Skip to content
  • David Feuer's avatar
    Improve Applicative definitions · abba3812
    David Feuer authored and Herbert Valerio Riedel's avatar Herbert Valerio Riedel committed
    Generally clean up things relating to Applicative and Monad in `GHC.Base`
    and `Control.Applicative` to make `Applicative` feel like a bit more of a
    first-class citizen rather than just playing second fiddle to `Monad`. Use
    `coerce` and GND to improve performance and clarity.
    
    Change the default definition of `(*>)` to use `(<$)`, in case the
    `Functor` instance optimizes that.
    
    Moreover, some manually written instances are made into compiler-derived
    instances.
    
    Finally, this also adds a few AMP-related laws to the `Applicative` docstring.
    
    NOTE: These changes result in a 13% decrease in allocation for T9020
    
    Reviewed By: ekmett, hvr
    
    Differential Revision: https://phabricator.haskell.org/D432
    abba3812