Instead of trying to design a 'string-split' that is both miraculously intuitive and profoundly flexible, why not design it like a Model-T and then write a guide/cookbook for how to use regexps to do all of the common cases that the extremely limited 'string-split' doesn't handle?

I suspect that writing such a guide will expose a few cases where common patterns can be turned into functions (similar to 'regexp-replace-quote').

Ryan


On 04/19/2012 07:27 AM, Eli Barzilay wrote:
Just now, Laurent wrote:
     1. Laurent: Does this make more sense?

Yes, this definitely makes more sense to me.  It would then treat
(string-split "aXXbXXXXy" "X") just like the " " case.

Although if you want to find the columns of a latex line like "x&&
y&  z" you will have the wrong result.  Maybe use an optional
argument to remove the empty strings? (not sure)

(This complicates things...)

First, I don't think that there's a need to make it able to do stuff
like that -- either you go with regexps, or you use combinations like

   (map string-trim (string-split "x&&  y&  z" "&"))


     4. Related to Q3: what does "xy" as that argument mean exactly?
       a. #rx"[xy]"
       b. #rx"[xy]+"
       c. #rx"xy"
       d. #rx"(?:xy)+"

Good question. d. would be the simplest case for newbies, but
b. might be more useful.  I think several other languages avoid this
issue by using only one character as the separator.

The complication is that with " " or " \t" it seems that you'd want b,
and with "&" you'd want c.  (Maybe even make"&" equivalent to
#rx" *&  *" -- that looks like it's too much guessing.)

And you're also making a point for:

   e. Throw an error, must be a single-character string.

BTW, this question is important because it affects other functions, so
I'd like to resolve it before doing anything.


_________________________
 Racket Developers list:
 http://lists.racket-lang.org/dev

Reply via email to