[Haskell-beginners] Error with floats in implementation of Horner's method.

Brent Yorgey byorgey at seas.upenn.edu
Sat Dec 14 02:21:32 UTC 2013


Right.  The problem is that when you write

  let a = [1,2,3,4]

at the GHCi prompt, the Evil Monomorphism Restriction forces it to
have a monomorphic type, and GHCi picks [Integer].  I recommend that
you turn off the Monomorphism Restriction, which you can do in one of
the following ways:

  1) Type :set -XNoMonomorphismRestriction at the GHCi prompt
  2) Add :set -XNoMonomorphismRestriction to your ~/.ghci file.

If you do the latter then you only have to do it once, and from then
on the MR will always be turned off in GHCi.

With the MR turned off,

  let cs = [1,2,3,4]

will result in  cs :: Num a => [a]  which will work the way you expect.

-Brent


On Fri, Dec 13, 2013 at 04:51:25PM -0500, Andrew Fleckenstein wrote:
> I know Num is a class, and Double is an instance of the Num class. I guess
> using Num would make it more generic, but I don't see why either one would
> be better in this particular function.
> 
> 
> On Fri, Dec 13, 2013 at 4:20 PM, Kim-Ee Yeoh <ky3 at atamo.com> wrote:
> 
> >
> > On Sat, Dec 14, 2013 at 4:07 AM, Andrew Fleckenstein <
> > andrew.fleckenstein at gmail.com> wrote:
> >
> >> I know it has something to do with types,
> >
> >
> > Right! :)
> >
> >
> >> but whenever I try to add a type signature to the functions it just
> >> messes everything up even more.
> >
> >
> > This works: let a :: [Double]; a = [-1,2,-6,2]
> >
> > This works too: let a :: Num a => [a]; a = [-1,2,-6,2]
> >
> > What do you think are the pros and cons of either?
> >
> > -- Kim-Ee
> >
> > _______________________________________________
> > Beginners mailing list
> > Beginners at haskell.org
> > http://www.haskell.org/mailman/listinfo/beginners
> >
> >

> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners



More information about the Beginners mailing list