[squeak-dev] Float parsed as a Fraction bug

Eliot Miranda eliot.miranda at gmail.com
Wed Aug 6 19:42:28 UTC 2014


Hi Levente,


On Wed, Aug 6, 2014 at 11:43 AM, Levente Uzonyi <leves at elte.hu> wrote:

> On Wed, 6 Aug 2014, Eliot Miranda wrote:
>
>  Hi All,
>>     Squeak trunk also suffers from the Float parsed as a Fraction bug:
>>
>> 1e-8 class Fraction
>> 1.0e8 class Float
>>
>
> I'm not entirely sure about it being a bug. I've checked Squeak 3.8
> (pre-SqNumberParser), and it also parsed that literal as a Fraction. If I
> want a Float, I can be explicit and use 1.0e-8.
>

IMO it very much *is* a bug.  Smalltalk-80 has never supported Fraction
literals.  They're always written as division expressions.  Fraction
answers false to isLiteral.  Just because it worked that way doesn't mean
it was right.  I suspect no one noticed.  Allowing Fraction literals feels
like a big change to me.

I made a modified version of Fraction >> #printOn:base: which outputs the
> literal format if possible. The change "fixes" the debugger (note that itw
> was way less broken in Squeak than in Pharo anyway).
> The only drawback I found is that some fractions become a bit more
> "complex" when printed, e.g. 3/4 => 75e-2


OK, but is this the right fix?  What does everybody think?  Keep the
language unchanged or add Fraction literals and add another incompatibility
with other dialects?

If Fractions are literals
- what is the semantics of 1/0 (easy, it is not a literal, but needs to be
stated)?
- what is [1/0.1] on: ZeroDivide do: [:ex| #error] ?  Is it 10.0 or #error,
i.e. is 1/0.1 10.0 or 1 / 0 followed by the Integer 1?


> Levente
>
>> --
>> eek! Eliot
>
> --
best,
Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20140806/f9d9380e/attachment.htm


More information about the Squeak-dev mailing list