Re: Implementation suggestions
Amirouche Boubekki 04 Mar 2020 06:41 UTC
We can not use that definition as-is, because the new implementation
rely on a generator. There is no peek-char.
Le mer. 26 févr. 2020 à 19:02, Lassi Kortela <xxxxxx@lassi.io> a écrit :
>
> >> - Rewrite `maybe-read-number` so it doesn't rely on regular expressions
> >> and `string->number`. This would remove the dependency on (chibi regexp)
> >> making it easier to port SRFI 180 to other R7RS Schemes.
> >
> > I will not fix it myself.
> >
> > scheme regex is in r7rs-large. Recoding string->number to only accept
> > JSON text numbers would be difficult.
>
> (define (read-valid-number-and-eof?)
> (define (read-char? goal1 goal2)
> (let ((char (peek-char)))
> (and (not (eof-object? char))
> (or (eqv? goal1 char) (eqv? goal2 char))
> (begin (read-char) #t))))
> (define (read-char-range* minch maxch)
> (let loop ((found? #f))
> (let ((char (peek-char)))
> (if (or (eof-object? char) (not (char<=? minch char maxch)))
> found? (begin (read-char) (loop #t))))))
> (read-char? #\- #f)
> (and (or (read-char? #\0 #f)
> (and (read-char-range* #\1 #\9)
> (begin (read-char-range* #\0 #\9) #t)))
> (or (not (read-char? #\. #f))
> (read-char-range* #\0 #\9))
> (or (not (read-char? #\e #\E))
> (begin (read-char? #\+ #\-)
> (read-char-range* #\0 #\9)))
> (eof-object? (peek-char))))
>
> (define (valid-number? string)
> (with-input-from-string string read-valid-number-and-eof?))
>
> > I integrated some of your suggested changes.
>
> Thank you.
>
> > Feel free to make a pull request against my fork at:
> >
> > https://github.com/amirouche/srfi-180
> >
> > I do not plan to change more code until the second draft is published,
> > so there will be no merge conflicts if you only edit code. Do not
> > forget to add yourself to the copyright notice in srfi-180.html. We
> > should also add copyright headers or spdx tags?
> >
> > I will work on the specification.
>
> Again, thanks for your continued efforts.
--
Amirouche ~ https://hyper.dev