pugs-comm...@feather.perl6.nl wrote:

Author: lwall Date: 2009-08-29 21:06:40 +0200 (Sat, 29 Aug 2009) New Revision: 28113## Advertising

Modified: docs/Perl6/Spec/S03-operators.pod Log: [S03] some tidying of /, %, div, and mod

<snip>

@@ -699,7 +699,16 @@$numerator / $denominator-If either operand is of C<Num> type, converts both operands to C<Num>+Performs division of real or complex numbers, returning a real or complex +number of appropriate type. + +If both operands are of integer type, the operator returns the +corresponding C<Rat> value.

<snip>

$numerator div $denominator

<snip>

-Use of C<div> on two C<Int> values results in a ratio of the C<Rat> type. +Use of C<div> on built-in integer types is equivalent to taking the +floor of a real division:+ $x div $y == floor($x/$y);

<snippage> This is a great move; thanks for this change.

`So now writing things like 5/43 in code will DWIM and produce a Rat which`

`maintains the intended value exactly, with no floating-point imprecision; and so`

`plain 5/43 is now a plain Rat literal, same as 1.23 is.`

`Similarly its good that by default 'div' can be counted on to result in values`

`of the same type as its operands, such as Int,Int-->Int.`

`Generally speaking, the simpler/terse looking numeric operators like "/" should`

`produce exact results from exact inputs where possible, and leave the inexact`

`(float) results from exact inputs to more complex/verbose looking operators.`

Much appreciated. -- Darren Duncan