[Haskell-cafe] Applicative functors with branch/choice ?

Dominique Devriese dominique.devriese at cs.kuleuven.be
Thu Jul 26 07:28:35 CEST 2012


> The possible extension may look somehow like this:
> class Applicative a => Branching a where
>  branch :: a (Either b c) -> (a b -> a d) -> (a c -> a d) -> a d

What about the following alternative that does not require an extension?

  import Control.Applicative

  eitherA :: Applicative f => f (a -> c) -> f (b -> c) -> f (Either a b) -> f c
  eitherA = liftA3 either

Note by the way that the result of this function will execute the
effects of all of its arguments (as you would expect for an
Applicative functor).


More information about the Haskell-Cafe mailing list