[Snow-users-list] high-priority snow packages and package naming
joolean at gmail.com
Sat Sep 15 17:21:57 EDT 2007
> You better understand that this is such an open-ended
> opinion swap that no matter what answer I give, betting
> money would likely be that my answer is bullshit.
Yes, fair enough.
> Every regexp engine in the world -- Perl, Posix, whatever -- will
> give you its own best performance for the subset "true regular
> expressions" and, essentially, every single one of them will give
> the exact same results for the same inputs and patterns.
> Here is something whose performance would not suck:
> a portable Scheme library that assumed fast, native
> true regular expressions, but that then added all the fancier
> features, as in Dorai's thing or Shiver's thing.
Right. So, working with the assumption (which I think is kind of
reasonable) that most of the Scheme platforms that Snow supports are
really just wrappers for a native POSIX implementation that present
said implementation in some way consistent with the mores of that
platform, I went through the list looking for a reasonable common
subset of basic regexp functionality. So here's a proposal for a Snow
regexp API --
(regexp-compile str) ;; Compile a string into a regexp object
;; Return a match object for a compiled regexp and a string,
;; (optionally) using explicit substring addressing
(regexp-match pattern str [start] [end])
;; Perform regexp replacement on a string using a compiled
;; regexp -- replacement will first be inserted after first-match
;; and will be inserted for no more than max-matches matches.
;; [not sure if this is the right way to present this function...]
(regexp-replace pattern str replacement [first-match] [max-matches])
(regexp? pattern) ;; type checking for compiled regexp objects
(regexp-match? match) ;; type checking for match structures
;; the number of matches in a match structure
;; the start index of match n
(regexp-match:start match [n])
;; the end index of match n
(regexp-match:end match [n])
What do people think?
More information about the Snow-users-list