[Haskell-cafe] On to applicative

michael rice nowgate at yahoo.com
Thu Aug 26 02:47:44 EDT 2010


OK, fmap2 works, but not fmap3. What am I not understanding?

Michael

import Control.Applicative

-- f :: (a -> b -> c)
-- fmap :: Functor f => (d -> e) -> f d -> f e

sumsqr :: Int -> Int -> Int
sumsqr i j = i*i+j*j

-- fmap :: Functor f => f a -> f (b -> c)    -- Identify d with a, and e with (b -> c)


fmap2 f a b = f `fmap` a <*> b
fmap3 f a b c = f `fmap` a <*> b <*> c
fmap4 f a b c d = f `fmap` a <*> b <*> c <*> d


-- fmap2 f a b = f <$> a <*> b
-- fmap3 f a b c = f <$> a <*> b <*> c
-- fmap4 f a b c d = f <$> a <*> b <*> c <*> d


*Main> fmap2 sumsqr (Just 3) (Just 4)
Just 25
*Main> fmap3 sumsqr (Just 3) (Just 4) (Just 5)

<interactive>:1:6:
    Couldn't match expected type `a2 -> b' against inferred type `Int'
    In the first argument of `fmap3', namely `sumsqr'
    In the expression: fmap3 sumsqr (Just 3) (Just 4) (Just 5)
    In the definition of `it':
        it = fmap3 sumsqr (Just 3) (Just 4) (Just 5)
*Main> 


--- On Thu, 8/26/10, Ivan Lazar Miljenovic <ivan.miljenovic at gmail.com> wrote:

From: Ivan Lazar Miljenovic <ivan.miljenovic at gmail.com>
Subject: Re: [Haskell-cafe] On to applicative
To: "michael rice" <nowgate at yahoo.com>
Cc: haskell-cafe at haskell.org
Date: Thursday, August 26, 2010, 2:33 AM

On 26 August 2010 16:29, michael rice <nowgate at yahoo.com> wrote:
>
> Can you recommend an example that works?

An example of what?

The definitions of fmap2, etc. on that page look like they're correct.

--
Ivan Lazar Miljenovic
Ivan.Miljenovic at gmail.com
IvanMiljenovic.wordpress.com



      
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20100826/8da45715/attachment.html


More information about the Haskell-Cafe mailing list