oops; meant to include Pharo in the discussion

---------- Forwarded message ----------
From: Eliot Miranda <eliot.miranda@gmail.com>
Date: Wed, Aug 6, 2014 at 12:42 PM
Subject: Re: [squeak-dev] Float parsed as a Fraction bug
To: The general-purpose Squeak developers list <squeak-dev@lists.squeakfoundation.org>


Hi Levente,


On Wed, Aug 6, 2014 at 11:43 AM, Levente Uzonyi <leves@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



--
best,
Eliot