[racket] Rationale behind missing string-trim
Thanks Eli. I'm happy you recognize the issue.
I did write my own string-trim-both function using Racket's regexp as
follows:
(define (string-trim-both string)
(cadr (regexp-match #px"[\\s]*(\\S+)[\\s]*" string)))
May not be the best, but it works. Even though it's easy to implement, my
issue was why it wasn't included. I guess I'm just used to such utilities
functions being provided for free in the language I usually work in: Ruby.
I was surprised that I had to either 1) roll my own, or 2) require the
srfi-13.
Thanks for you help.
--
Chad
On Wed, May 9, 2012 at 11:42 AM, Eli Barzilay <eli at barzilay.org> wrote:
> 30 minutes ago, Chad Albers wrote:
> > I'm having a long running discussion with my colleagues about the
> > practically of scheme. I've argued that it is, and using Racket
> > Scheme to prove my point. However, on the other side of the debate,
> > I've noticed that Racket's string API is missing what I consider to
> > be a extremely practical procedure - string-trim. This procedure is
> > actually in srfi 13. While I can 'require' srfi13, I can't import
> > it as is, because sfri-13's procedures overlap Racket's string
> > procedures. I believe Racket's require feature allows me to just
> > import those procedures I need from srfi 13, but I find that kind of
> > awkward.
> >
> > My question is, then, why would such a practical procedure missing
> > from Racket's string API?
>
> In no particular order:
>
> * If two libraries provide the same name, you'd only run into problems
> if you `require' both -- otherwise, as Laurent showed, there
> shouldn't be any problems. If you do need to require both, then you
> can use a prefix or grab only the functionality that you need.
>
> * I don't see a big meta point about the practicality of Racket
> ("Scheme" is trickier to talk about) -- we did have regexp
> operations for a long time now, and as any Perl hacker knows, you
> don't need anything more... But more seriously it definitely means
> that practicality is important.
>
> * The particular functionality that `string-trim' provides is one that
> can easily be done using regexps. This is why it wasn't an urgent
> addition. That's not to say that it's not needed -- and in fact
> this exact point came up recently -- it's just that if the main goal
> is to provide some simpler interface than regexps, then it's not
> clear how such an interface should look.
>
> * As a result of the recent discussion, I've added it, and it will be
> included in the next release. Also, it just happens that you wrote
> this email just when I was working on that exact function. (We had
> talked about the general interface to these functions and reached
> some conclusions that slightly change the way it's implemented.)
>
> --
> ((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay:
> http://barzilay.org/ Maze is Life!
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20120509/3bc79181/attachment.html>