---- Darren Duncan wrote ---- > On 2015-06-16 2:15 PM, The Sidhekin wrote: > > On Tue, Jun 16, 2015 at 10:52 PM, Michael Zedeler <mich...@zedeler.dk> > > wrote: > > ...and unpredictable performance is a cost you're willing to pay? > > > > I don't write performance-critical applications, but even if I did, why > >would > > I prefer getting the wrong answer faster? > > I agree with Sidhekin and similar mentalities. > > On the range between safety/correctness and speed, a good programming > language / > tool should always default to the most safe/correct option when the user > doesn't > specify where on the range they want, and leave it to the power users to > explicitly make the trade-off when they know what they're doing. > > In this case, people who explicitly want floats because of performance rather > than exact rationals do indeed count as power users.
I'd still pull out the argument that you want the least surprising behavior. Of course, I would prefer being able to add two rational numbers with very large denominators and have the underlying machinery shorten the result for me, but the performance hit is easy to great. Am I missing something here, or wouldn't most people expect addition to be a constant time operation? Imagine a really simple operation: a script that takes a spread sheet, parses it and writes out the weighted average of some of the columns. Anyone would expect that if 40,000 rows takes 1 second to process, then 80,000 takes 2. With Perl 6 not do much. You'd have to switch to "power user mode" to get that kind of predictability. > Normal people are more interested in not being surprised by the answers they > get > to what should be common-sense questions, such as when adding 10.3 to 14.2. So far, almost every other language has behaved this way, and it has worked. I can see that Rats do solve a problem, but if you'd claim that it is very severe then I'd disagree. This is a minor nuisance that I'd only pay a small price to fix. > I should also point out that finance / anything to do with money is an > extremely > common use case that cares very much about math being exact, its not just > esoteric science applications. I doubt that Rats is a complete solution to the problems you have to solve when it come to represent monetary values. My take is you'd need very specific rounding algorithms when you convert to a fixed number of digits. I believe my example with the spread sheet is much more mundane. > This all being said, I draw the line where implementing is much more > complicated > to serve esoteric cases. So for example while exact precision rationals > absolutely should be default / part of core, something like symbolic values > eg > exact representations of irrational numbers, are perfectly valid to, and > probably shouldn't, be part of core. Exact rationals are not particularly > complicated. Its perfectly reasonable to expect in the core that if someone > does math that is known to deal with irrationals in general, that loss of > precision then is acceptable. Just to be sure that we are taking about the same thing: An ideal Rat implementation should be able to always output the least possible denominator, right? And if I happen to add some rational numbers that involve, say, very very large prime numbers (intentionally or not), it's clear that the result probably can't be shortened much, but the run time of the underlying algorithm may explode. ..and that is acceptable behavior? ..or did I miss something? M. -- Michael Zedeler 70 25 19 99 mich...@zedeler.dk dk.linkedin.com/in/mzedeler |twitter.com/mzedeler | github.com/mzedeler