On 15 February 2013 19:22, Raphael Gaschignard <dasur...@gmail.com> wrote: > Out of curiosity, what is the rationale for allowing programs to infer > certain types, but not for the (inferred) type to be declared?
That's the type that's needed; the fact that you need an extension for GHC to allow you to use it is irrelevant. > > > > On Fri, Feb 15, 2013 at 4:54 PM, David McBride <toa...@gmail.com> wrote: >> >> sum' [] = [] -- returns a list of something the way you intended >> sum' (x:xs) = x + xum' xs -- you intended it not to return a list but it >> could if you think about it. >> >> The compiler says I think returns a list based on what I see so far, well >> if you can add these together then the only way you could get a list from >> that is if you were adding two lists together ie (+ l1 l2) :: [a] -> [a] -> >> [a]. That works if we assume that sum' must have accepted [[a]] and >> returned [a]. >> >> But in order for that to be the case [a] must be an instance of Num, >> otherwise they couldn't be added together like that, so tack on a Num [a] >> requirement on. >> >> But having a typeclass of the form [a] that requires an extension, >> FlexibleContexts, which you can read about here: >> http://www.haskell.org/ghc/docs/7.0.2/html/users_guide/other-type-extensions.html#flexible-contexts >> >> On Fri, Feb 15, 2013 at 2:33 AM, sheng chen <kkchensh...@gmail.com> wrote: >>> >>> Hi, >>> >>> I was puzzled by the following little program. >>> >>> sum' [] = [] >>> sum' (x:xs) = x + sum' xs >>> >>> I thought the GHC type checker will report a type error. However, the >>> type checker accepts this program and gives the type >>> >>> Num [a] => [[a]] -> [a] >>> >>> When I add type annotation to the program >>> >>> sum' :: Num [a] => [[a]] -> [a] >>> sum' [] = [] >>> sum' (x:xs) = x + sum' xs >>> >>> The GHC asks me to add FlexibleContexts language extension. >>> >>> I would appreciate explanation on this issue. >>> >>> Thanks, >>> Sheng >>> >>> _______________________________________________ >>> Haskell-Cafe mailing list >>> Haskell-Cafe@haskell.org >>> http://www.haskell.org/mailman/listinfo/haskell-cafe >>> >> >> >> _______________________________________________ >> Haskell-Cafe mailing list >> Haskell-Cafe@haskell.org >> http://www.haskell.org/mailman/listinfo/haskell-cafe >> > > > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe > -- Ivan Lazar Miljenovic ivan.miljeno...@gmail.com http://IvanMiljenovic.wordpress.com _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe