Hi Danilo,

> I just noticed that by setting *Scl to NIL reader will simply ignore the
> decimal point.  I haven't seen it in documentation.

Ooos, no. Better don't do that. '*Scl' is expected to be a number.
Everything else will result in undefined behavior.


> I would like to get something like:
> 
> : 100
> -> 100
> : 3.0
> -> (decimal 30 -1)
> : 0.0040
> -> (decimal 40 -4)

The reader (REPL, or from a file) can't do that. The handling of the
decimal point is a kind of hard coded read macro.


Handing the decimal point on the application level is of course
possible. The +FixField class in the GUI (lib/form.l), for example,
accepts both input with and without a decimal point.

You could achieve something like the above with a function, e.g.:

   (de parseNum (Str)
      (let Lst (chop Str)
         (if (member *Sep0 Lst)
            (list
               'decimal
               (format (delete *Sep0 Lst))
               (- 1 (length @)) )
            (format Lst) ) ) )

   : (parseNum "3.0")
   -> (decimal 30 -1)

   : (parseNum "0.0040")
   -> (decimal 40 -4)

♪♫ Alex
-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe

Reply via email to