On Thu Oct 29 06:16:17 2015, colomon wrote:
> Timo Paulssen <[email protected]> wrote:
> >
> > Can you give us the .perl of $!total_interest, $interests and
> > $interests.Rat? (perhaps even the .nude, too?)
> >
> > On 29/10/15 10:31, Kamil Kułaga (via RT) wrote:
> > > # New Ticket Created by  "Kamil Kułaga"
> > > # Please include the string:  [perl #126485]
> > > # in the subject line of all future correspondence about this
> > > issue.
> > > # <URL: https://rt.perl.org/Ticket/Display.html?id=126485 >
> > >
> > >
> > > I've tried to substitute numeric with Rat (and the switch to
> > > FatRat) but found some issues in type checking. Errors does not
> > > occur on simple examples so I provide whole code.
> > >
> > > $!total_interest += $interests.Rat;
> > >
> > > Normally it is not a problem to += two rats but here it becomes a
> > > problem.
> 
> It's impossible to say what's going on without more source code than
> that,
> but please note that basic Rat arithmetic is not guaranteed to result
> in a
> Rat.  It is explicitly spec'd that if arithmetic would cause the
> denominator of a Rat to exceed what can be stored in an uint64, the
> operation will return a Num instead.
> 
> http://design.perl6.org/S02.html#Numeric_Types
> 
> If you want the denominator to grow endlessly instead, you want to use
> FatRat, which is there for exactly this reason.  (Though I think
> mixing
> FatRats and Nums will return a Num -- while it is certainly possible
> to
> exactly convert a Num to a FatRat, as far as I know no one has
> implemented
> that code for us yet.)
> 
> Note, however, that Rats are probably a bad choice for mortgage
> calculations anyway.  No one in the "real world" is more precise than
> a
> Num there, so all you could possibly do is introduce discrepancies
> between
> your calculations and more standard mortgage systems.
> 
> --Sol

I took the code submitted, and did a substitution of FatRat for each instead of 
Rat (Both the declared types and the coercer methods) in the lib and the tests, 
and got 100% pass rate, proving out Sol's point here.

I agree that this is behaving according to the spec & design documents.

Rejecting ticket.
-- 
Will "Coke" Coleda

Reply via email to