[Haskell-cafe] Re: How to "Show" an Operation?
Luke Palmer
lrpalmer at gmail.com
Fri Jun 11 01:39:22 EDT 2010
On Thu, Jun 10, 2010 at 10:43 PM, Brandon S. Allbery KF8NH
<allbery at ece.cmu.edu> wrote:
> On Jun 10, 2010, at 17:38 , Martin Drautzburg wrote:
>>>
>>> instance Applicative Named where
>>> pure x = Named "" x
>>> (Named s f) <*> (Named t v) = Named (s ++ "(" ++ t ++ ")") (f v)
>>
>> Applicative. Need to study that
>
> The above is just the Functor, rephrased in Applicative style. <*> is
> exactly fmap. Likewise, Monad has a function "liftM" which is exactly fmap.
> (For historical reasons, these are not related the way they should be: all
> Monads should be Applicatives, all Applicatives should be Functors, and all
> Functors should be instances of an even more primitive class Pointed.)
(<*>) :: Applicative f => f (a -> b) -> f a -> f b
(<$>) :: Functor f => (a -> b) -> f a -> f b
(<$>) is fmap, not (<*>). (<*>) is available for monads as Control.Monad.ap.
Luke
More information about the Haskell-Cafe
mailing list