Hey Alex,
Since json.l is available in standard library, I'd prefer to use it :)
Regards,
Kashyap

On Thu, May 9, 2019 at 1:08 AM Alexander Williams <a...@unscramble.co.jp>
wrote:

> If you're just trying to work with the decimal numbers in PicoLisp, then
> why not just use fixed-point?
>
> You can modify my json.l and specify a 20 digit decimal, and then parse
> your file. The result will be strings instead of numbers, but it works
> fine. Here's a
> patch:
>
>
> diff --git a/json.l b/json.l
> index 551e3a9..a135c39 100644
> --- a/json.l
> +++ b/json.l
> @@ -6,6 +6,8 @@
>
>   (setq *Json_control_characters (extract '((N) (unless (member N '("^H"
> "^L" "^J" "^M" "^I")) N)) (mapcar char (range 1 31))))
>
> +(scl 20)
> +
>   # send error message to STDERR
>   [de json-err-throw (Error)
>     (msg Error)
> @@ -112,7 +114,7 @@
>         ((= "[" Type)     (make (link T) (json-link-array)))
>         ((= "{" Type)     (make (json-link-object)))
>         ((lst? Type)      (pack Type))
> -      ((num? Type)      Type)
> +      ((num? Type)      (format Type *Scl))
>         ((= "-" Type)     (if (num? (car *Json)) (format (pack "-" (pop
> '*Json))) (json-iterate-object)))
>         ((= 'true Type)   'true)
>         ((= 'false Type)  'false)
>
>
> -- Try that against my latest git commit to
> https://github.com/aw/picolisp-json (tag v4.0.0)
>
>
> AW
>
> On Wed, 8 May 2019, C K Kashyap wrote:
>
> > Perfect!!!! - It is pure bliss to see such concise code.
> > Regards,
> > Kashyap
> >
> > On Wed, May 8, 2019 at 6:59 AM Alexander Burger <a...@software-lab.de>
> wrote:
> >
> >> On Wed, May 08, 2019 at 09:17:54AM +0200, Alexander Burger wrote:
> >>> Yes, "123.0.0" is not a legal number.
> >>>> I am sure there must a better way to do the lengthy "0"..."9" that
> I've
> >>>> done :)
> >>
> >> The best is to avoid at all looping over the characters, because
> built-ins
> >> are a
> >> lot faster than individual function calls in a loop.
> >>
> >> What I would do here is
> >>
> >>    (pipe
> >>       (in '("curl" "-s" "
> >> https://api.iextrading.com/1.0/stock/aapl/chart/3m";)
> >>          (while
> >>             (prin
> >>                (echo "close" "volume" "unadjustedVolume") )
> >>             (when (prin (till "," "}"))
> >>                (or (sub? "." @) (prin ".")) ) ) )
> >>       (readJson) )
> >>
> >> The trick is to read the digits with 'till', print them, and *then*
> check
> >> if a
> >> dot is needed.
> >>
> >> ☺/ A!ex
> >>
> >> --
> >> UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe
> >>
> >

Reply via email to