
11 Nov
2011
11 Nov
'11
12:05 p.m.
Bas van Dijk writes:
instance ArrowApply a => Applicative (ArrowMonad a) where pure = return (<*>) = ap
You don't actually need ArrowApply there: instance Arrow a => Applicative (ArrowMonad a) where pure x = ArrowMonad (arr (const x)) ArrowMonad f <*> ArrowMonad x = ArrowMonad (f &&& x >>> arr (uncurry id)) Of course for this and the Functor instance ArrowMonad is a poor name.