[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: string->number



 | From: Thomas Bushnell BSG <tb@xxxxxxxxxx>
 | Date: Thu, 02 Jun 2005 13:05:29 -0700
 | 
 | Aubrey Jaffer <agj@xxxxxxxxxxxx> writes:
 | 
 | > Yes, I should have written "inexact numbers".
 | 
 | Ok, but when we speak of symbolic "infinite precision" representations
 | of sqrt(2), presumably we are using exact numbers.

No!  My point is that inexact numbers correspond to real number
neighborhoods; and hence have finite precision.

 | > Can number->string return a string which can't be READ as a number?
 | >
 | > I had thought that 6.2.4 "Syntax of numerical constants" and 7.1.1
 | > "Lexical structure" applied to the results of NUMBER->STRING.  If they
 | > are independent, a note about that should be added to the report.
 | 
 | I think they do, but implementations certainly can extend the syntax
 | of numbers if they wish (provided that NUMBER->STRING, STRING->NUMBER,
 | and READ all behave in the expected way).

The three groups of features dealing with numerical representation
are:

 * number->string, string->number;

 * read, write, display;

 * numerical constants.

 Section 6.2.3 Implementation restrictions:

   Although Scheme allows a variety of WRITTEN NOTATIONS for numbers,
   any particular implementation may support only some of them.

 Section 6.2.4 Syntax of numerical constants

   The syntax of the WRITTEN REPRESENTATIONS for numbers is described
   formally in section Lexical structure.

 Section 6.2.6 Numerical input and output

   The procedure `number->string' takes a number and a radix and
   returns as a string an EXTERNAL REPRESENTATION of the given number
   in the given radix such that ...

 Section 6.6.2 Input:

   `Read' converts EXTERNAL REPRESENTATIONs ...

 Section 6.6.3 Output:

   `Write' and `display' create WRITTEN REPRESENTATIONs.

The text in section 6.2.6 specifies that `number->string' produces an
EXTERNAL REPRESENTATION.  Thus the numerical representations produced
by `number->string' have the same notation as numerical constants.
`Read' converts EXTERNAL REPRESENTATIONs, so it also has the same
notation as numerical constants.

`number->string' and `string->number' are constrained to use the same
representations.

The relation between the forms `read' and `write'n is not explicitly
stated, but is reasonably assumed to be the same.