read-ing scientific notation

Simon Peyton-Jones simonpj@microsoft.com
Fri, 12 Oct 2001 07:45:59 -0700


| GHC is oddly particular about decimal points in "read"-ing in=20
| of Doubles in scientific notation. It seems that read=20
| "3.0e-06" is acceptable but read "3e-06" is not (both read=20
| "3" and read "3.0" work fine as Doubles). It's the same in=20
| nhc and hugs. Perhaps this is some standard somewhere that=20
| Perl doesn't understand?

It's true about the Haskell language too, and that's why it's true of
Read.  The lexical syntax says that

	10e3

means

	10 e3

(i.e. two lexemes).   I don't like this choice, and it could be "fixed"=20
in the Revised H98 report.  The current production for float is

	float  ->  decimal . decimal[(e | E)[- | +]decimal]=20

I guess we could change that to=20

	exponent -> (e|E) [+|-] decimal

	float -> decimal . decimal [exponent]
	         |   decimal exponent

It's an unforced change and therefore to be regarded with
deep suspicion. I'd be interested in people's views about this.

Simon