This page is part of the web mail archives of SRFI 13 from before July 7th, 2015. The new archives for SRFI 13 contain all messages, not just those from before July 7th, 2015.
The SRFI-13 string library seems like a good proposal, but I have a few comments. Overall, I think that the library is too big, it has too many procedures. I think we should try to remove some unnessesary/redundant/seldom useful procedures. Some specific comments: * I think that string-for-each should work form left to right and that no other string-iter[are] procedure should be included. * I don't see the point in [sub]string-compare[-ci]. Can anybody give a sensible example of their use? * I think that the string-trim and string-pad procedures should be named string-trim-left and string-pad-left. I don't think that left is an obvious default for trimming and padding (as it is for string-index, string-skip etc). * I think that the let-string-start+end macro should be left out of the standard. It's easily enough to do it anyway with the string-parse-start+end procedure. And it might create problems to include a macro. I think that the KMP searching procedures should be generalized to allow for other algorithms than KMP. But only to algorithms that have the same properties as KMP, i.e. scanning a stream without backtracking. This excludes Boyer-Moore, but allows for some recent algorithms that are said to be faster than KMP[1]. The interface could be something like this: make-search-object c= s [start end] -> opaque "search object" Returns an opaque "search object" that can be used to search for S in a stream/string. The search object includes S itself if nessesary (nessesary for KMP, but not for [1]). search-step search-object c= c search-state -> bool or opaque "search state" Performs a step in the search, taking an opaque "search state" object and returns a new "search state" object. Use '() as search state for the first time. Or why not like this: make-search-proc c= s [start end] -> search procedure Returns a search procedure that can be used to search for S in a stream/string. <search-proc> c -> bool Performs a step in the search, updating an internal search state. <search-proc> '() -> '() Reset the internal state of the search procedure. [1] Sun Wu, Udi Manber: "Fast text searching allowing errors", Communications of the ACM, October 1992.