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 (regexp-match:count match)
;; 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?