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 <[email protected]> wrote: From: Ivan Lazar Miljenovic <[email protected]> Subject: Re: [Haskell-cafe] On to applicative To: "michael rice" <[email protected]> Cc: [email protected] Date: Thursday, August 26, 2010, 2:33 AM On 26 August 2010 16:29, michael rice <[email protected]> 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 [email protected] IvanMiljenovic.wordpress.com
_______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
