[Haskell-cafe] Why is Haskell flagging this?
Darrin Chandler
dwchandler at stilyagin.com
Fri Dec 17 22:41:04 CET 2010
On Fri, Dec 17, 2010 at 09:04:20AM -0800, michael rice wrote:
> I don't understand this error message. Haskell appears not to understand that 1 is a Num.
>
> Prelude> :t 1
> 1 :: (Num t) => t
> Prelude> :t [1,2,3,4,5]
> [1,2,3,4,5] :: (Num t) => [t]
> Prelude>
>
> Michael
>
> ===================
>
> f :: [Int] -> IO [Int]
> f lst = do return lst
>
> main = do let lst = f [1,2,3,4,5]
> fmap (+1) lst
'f' operates on '[Int]', but '(+1)' operates on 'Int'... Does the
following do what you want?
main = do let lst = f [1,2,3,4,5] in
fmap (map (+1)) lst
>
> ===============================
>
> Prelude> :l test
> [1 of 1] Compiling Main ( test.hs, interpreted )
>
> test.hs:5:17:
> No instance for (Num [Int])
> arising from the literal `1' at test.hs:5:17
> Possible fix: add an instance declaration for (Num [Int])
> In the second argument of `(+)', namely `1'
> In the first argument of `fmap', namely `(+ 1)'
> In the expression: fmap (+ 1) lst
> Failed, modules loaded: none.
> Prelude>
>
>
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
--
You've been warned.
More information about the Haskell-Cafe
mailing list