[Haskell-cafe] MRP, 3-year-support-window, and the non-requirement of CPP

Edward Kmett ekmett at gmail.com
Sat Oct 10 19:16:10 UTC 2015


On Wed, Oct 7, 2015 at 3:35 AM, Herbert Valerio Riedel <hvr at gnu.org> wrote:

> --8<---------------cut here---------------start------------->8---
> import Control.Applicative as A (Applicative(..))
>
> data Maybe' a = Nothing' | Just' a
>
> instance Functor Maybe' where
>     fmap f (Just' v) = Just' (f v)
>     fmap _ Nothing'  = Nothing'
>
> instance A.Applicative Maybe' where
>     pure = Just'
>     f1 <*> f2   = f1 >>= \v1 -> f2 >>= (pure . v1)
>
> instance Monad Maybe' where
>     Nothing' >>= _  = Nothing'
>     Just' x  >>= f  = f x
>
>     return = pure -- "deprecated" since GHC 7.10
> --8<---------------cut here---------------end--------------->8---
>
>
Alternately,

import Control.Applicative
import Prelude

data Maybe' a = Nothing' | Just' a

instance Functor Maybe' where
    fmap f (Just' v) = Just' (f v)
    fmap _ Nothing'  = Nothing'

instance Applicative Maybe' where



> -- hvr
> _______________________________________________
> Haskell-prime mailing list
> Haskell-prime at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-prime
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-prime/attachments/20151010/14bf5791/attachment.html>


More information about the Haskell-prime mailing list