[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: predicate->char-set considered harmful
> From: Brad Lucier <lucier@xxxxxxxxxxxxxxx>
> > I hope you don't try to define predicate->bitset in a later SRFI ;-).
> > Well, I guess it's too late to put it into the lset-... suite of
> > operations in SRFI 1...
> My unstated (definitely understated) point is that predicate->bitset
> will never return in the general case, which isn't much different from
> how long it will take predicate->char-set to return on systems that use
> a four-byte character representation.
> Yep, I understood. Just a little bit of wry academic humor there, on my
> Clearly people who use 4-byte char types will have to stear clear of
> ops that are linear in the type size.
I'm trying to think of a way to embed an escape procedure into
predicate->char-set[!]. Is the following legal? Does it solve
the "I only want to examine ASCII characters to build this set"
(let ((result (char-set)))
(predicate->char-set! (lambda (ch) (or (char=? ch #\newline)
(and (> (char->integer ch) 127)
I suppose one would need a guarantee that characters are examined in
(char->integer ch) order, and it would have to add the character to
result immediately when the predicate returned true, and it isn't
linear update, and ...