[R6RS] revised Unicode SRFI
Michael Sperber
sperber at informatik.uni-tuebingen.de
Tue Apr 11 09:44:03 EDT 2006
Matthew Flatt <mflatt at cs.utah.edu> writes:
> At Wed, 29 Mar 2006 15:47:28 +0200, Michael Sperber wrote:
>> Moreover, it might be worth mentioning that
>> CaseFolding.txt contains purely derived information.
>
> I think it's not derived. A comment in file says that it's a
> "supplement to the UnicodeData file".
I'm still confused on this---if only for the purposes of implementing.
I've currently implemented case-folding by first doing string-upcase
and then mapping char-downcase over the result, like so:
(define (string-foldcase s)
;; map to uppercase, then back to lowercase char-by-char
(let* ((ucase (string-upcase s))
(size (string-length ucase)))
(let loop ((i 0))
(if (< i size)
(begin
(string-set! ucase i (char-downcase (string-ref ucase i)))
(loop (+ 1 i))))
ucase)))
These require only UnicodeData.txt and SpecialCasing.txt. I generally
have a hard time reading the algorithms as written up in the Unicode
consortium TRs, so I'm probably wrong---could you clarify?
Also, an implementation of char-upper-case? and char-lower-case? must
look at PropList.txt, I believe, which isn't mentioned yet.
I'm very slightly concerned about the inconsistent spelling of
"title-case" (and, by transitivity, the other -cases) but that
probably can't be helped.
Other than that, it's ready to go by me.
--
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla
More information about the R6RS
mailing list