compile Maxima file containing a large list



Raymond Toy <toy.raymond at gmail.com> wrote:

   >     CLISP:
   > 
   >     (1. 2. 3. 4. 5. 6. 7.)
   
   This is correct.  A decimal point is allowed after an integer.  If you
   try this in other lisps, you will see that they return an integer, not a
   float.

It is _not_ allowed!  In ANSI CL the decimal point is _required_ if
*print-radix* is true, and _prohibited_ if it is false.  The characters
emitted by the printer for integers is entirely prescribed by the ANS.
It appears for whatever reason *print-radix* is true in CLISP at the
time that example was run.

Here are some other conforming examples.  Note that the first printed
value is the one printed by write.  The second is the print by the repl,
presumably using the current values of the several printer control
variables.  The :radix and :base: keywords bind the obvious special
variables.

 cl-user(25): (write 10 :radix t)
 10.
 10
 cl-user(26): (write 10 :radix t :base 8)
 #o12
 10
 cl-user(27): (write 10 :radix nil :base 8)
 12
 10

   
   >     GCL:
   > 
   >     Error: The function WITH-STANDARD-IO-SYNTAX is undefined.
   
   Shouldn't be too hard to create our own version of this macro.

It's useful for portable code.  Too bad it's so hard to get it and the
few other late but easy X3J13 additions into GCL.