[I hope these lists are still active]
Hello,
I am currently doing implementations of SRFI-13 and SRFI-14 for Guile,
and stumbled across errors (at least I think so) in the SRFI document.
Maybe someone here can enlighten me:
1. `char-set-hash'
The following is stated:
``A positive value restricts the return value to the range [0,bound).''
Below, as example code, there is given:
(define (char-set-hash cs . maybe-bound) 1)
which would break if the procedure was called as follows:
(char-set-hash cs 1)
because the returned value has to be in [0,1), but 1 is returned.
`string-hash' and `string-hash-ci' have the same errors.
2. `char-set-unfold' and `char-set-unfold!'
They are specified as
char-set-unfold f p g seed [base-cs] -> char-set
char-set-unfold! f p g seed base-cs -> char-set
but the example implementation is given as
(define (char-set-unfold p f g seed base-cs)
(char-set-unfold! p f g seed (char-set-copy base-cs)))
(define (char-set-unfold! p f g seed base-cs)
(let lp ((seed seed) (cs base-cs))
(if (p seed) cs ; P says we are done.
(lp (g seed) ; Loop on (G SEED).
(char-set-adjoin! cs (f seed)))))) ; Add (F SEED) to set.
Note the different order of the predicate and seed mapping procedures.
[string-unfold is defined correctly]
I wonder if changes to the SRFI document are allowed, if they only
correct errors and not introduce incompatibilities. If yes, they
should be made.
Best regards,
'martin