jules at jellybean.co.uk
Wed Oct 10 09:57:38 EDT 2007
jerzy.karczmarczuk at info.unicaen.fr wrote:
>> This discussion is not about adding it, but about whether or not it
>> should have a default.
>> Are you suggesting pi should be removed from the Floating class?
>> Then, what type would you give pi?
> First, I don't care whether it is there or not. When I use it, I define
> a particular instance (double, a constant formal series, a constant element
> of some differential algebra I enjoy personally, etc. No default would
> help me anyway).
> And then, I give it the type it deserves.
Evidently you use pi in more 'serious' programs than I do. I use pi
simply for geometric reasons, when I wish to specify circular or
elliptic paths or similar constructions. For this I am pleased that the
language libraries give me pi, because they save me the work of defining it.
>> Given that pi is often used with sin, as in "sin (t * pi)" it would
>> seem very odd if pi forced that to be monomorphic:
> Oh yes, everybody in the world uses in ONE program several overloaded
> versions of pi, of the sine function, etc. Well, perhaps not everybody,
> for example I don't. And I use numerics quite often.
I like to write a complex function which might use multiple trig
functions and pi, to describe the kind of thing about. I might want to
use that function at Double, or GLdouble, or GLfloat, for various
reasons. I don't particularly want to have to think about that kind of
thing more than I have to.
> How often *you* needed simultaneously overloaded pi and trigs in such a way
> that a default could help you? Answer sincerely (if you wish to answer at
The default wouldn't help me at all. The default would help a (putative)
designer of a new Floating instance, and I have never been one of those.
If it is true of many Floating instances that (atan 1 * 4) is an
accurate way to calculate pi (and it appears to be 'accurate enough' for
Float and Double, on my computer) then adding it as a default doesn't
appear to do any harm.
I can't say I think it's very important either.
More information about the Haskell-Cafe