char-generator Bradley Lucier (14 Jan 2024 17:45 UTC)
|
Re: char-generator
Per Bothner
(14 Jan 2024 17:59 UTC)
|
Re: char-generator
Marc Nieper-Wißkirchen
(14 Jan 2024 18:02 UTC)
|
Re: char-generator
John Cowan
(16 Jan 2024 02:28 UTC)
|
Re: char-generator
Per Bothner
(16 Jan 2024 06:10 UTC)
|
Re: char-generator
Antero Mejr
(16 Jan 2024 16:49 UTC)
|
Re: char-generator
John Cowan
(17 Jan 2024 02:49 UTC)
|
Re: char-generator
Marc Nieper-Wißkirchen
(14 Jan 2024 18:00 UTC)
|
Re: char-generator
Bradley Lucier
(14 Jan 2024 18:04 UTC)
|
Re: char-generator
Marc Nieper-Wißkirchen
(14 Jan 2024 18:06 UTC)
|
Re: char-generator
Antero Mejr
(15 Jan 2024 03:17 UTC)
|
Re: char-generator
John Cowan
(16 Jan 2024 01:40 UTC)
|
The draft document states: char-generator does not use an SRFI 14 char-set. This means, for implementations that use Unicode, char-generator may generate characters that are not valid Unicode code points. I think this is the correct behavior, since invalid code points fulfill the char? predicate. First question: Why do "invalid code points fulfill the char? predicate"? It does seem to be true, at least for Gambit, but is there some document somewhere that specifies this? Second question: The character generator in SRFI 231's test-arrays.scm, which was written under Gambit, is (define (random-inclusive a #!optional b) (if b (+ a (test-random-integer (- b a -1))) (test-random-integer (+ a 1)))) (define (random-char) (let ((n (random-inclusive (##max-char-code)))) (if (or (fx< n #xd800) (fx< #xdfff n)) (integer->char n) (random-char)))) This is because (integer->char n) throws an error if n is not a valid Unicode code point. ============================= Aside: In Gambit, while (##integer->char n) does no error checking, it also does things like: > (##integer->char -1) #f ============================= So I don't believe that the sample implementation (define (char-generator) (gcons* #\null (gmap integer->char (make-random-integer-generator 0 max-char)))) will work on Gambit. I guess I would propose that (char-generator) return only valid characters according to whatever the implementation supports. Brad