Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re^12: Small Perl 6 discoveries II, Rats

by Anonymous Monk
on Oct 27, 2017 at 19:05 UTC ( [id://1202184]=note: print w/replies, xml ) Need Help??


in reply to Re^11: Small Perl 6 discoveries II, Rats
in thread [Perl6] Small discoveries I, __DATA__

First, Rats aren't FatRats and vice-versa.
They're both Rational, but that's still not very useful.
> my Rational $x = 1.111111111111111111111; 1.11111111111111111604544 > $x *= 0.1; Type check failed in assignment to $x; expected Rational but got Num ( +0.111111111111111e0)
The argument type-coercion is cute, but there doesn't seem to be any way to set the precision.
> sub foo(FatRat() $x) { return $x }; foo(pi).nude (355 113) > pi.FatRat(1e-8).nude (103993 33102)
And I don't know how to interpret this message...
> my FatRat() $x = 0.1; ===SORRY!=== Error while compiling: Coercion FatRat(Any) is insufficiently type-like to qualify a variable ------> my FatRat() $x⏏ = 0.1; expecting any of: constraint

Replies are listed 'Best First'.
Re^13: Small Perl 6 discoveries II, Rats
by raiph (Deacon) on Oct 27, 2017 at 20:19 UTC
    In your first block of code you do a calculation whose resulting denominator is more than 64 bits. So the result is a Num.

    Your second block shows BUG Num.FatRat coercion is inexact.

    Your third block is an LTA error message. It should say something to the effect of "coercion type constraint on variable declaration not yet implemented".

    Hth.

      In your first block of code you do a calculation whose resulting denominator is more than 64 bits. So the result is a Num.
      So what you're telling me is that it's "working as designed"? There seems to be no way to get exact rational calculations without scattering a bunch of explicit FatRat conversions through my code. If I slip up somewhere, Perl6 will either hit me with a sneaky type error, or (worse) silently reduce precision on me.
      Your third block is an LTA error message.
      Lighter Than Air? Lawn Tennis Association? Long-Term Abuse?

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1202184]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (7)
As of 2024-04-23 10:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found