Thanks Eli.  I&#39;m happy you recognize the issue.<br><br>I did write my own string-trim-both function using Racket&#39;s regexp as follows:<br><br>  (define (string-trim-both string)<br>    (cadr (regexp-match #px&quot;[\\s]*(\\S+)[\\s]*&quot; string)))<br>
<br>May not be the best, but it works.  Even though it&#39;s easy to implement, my issue was why it wasn&#39;t included.  I guess I&#39;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.<br>
<br>Thanks for you help.<br><br clear="all">--<br>Chad<br><br>
<br><br><div class="gmail_quote">On Wed, May 9, 2012 at 11:42 AM, Eli Barzilay <span dir="ltr">&lt;<a href="mailto:eli@barzilay.org" target="_blank">eli@barzilay.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="HOEnZb"><div class="h5">30 minutes ago, Chad Albers wrote:<br>
&gt; I&#39;m having a long running discussion with my colleagues about the<br>
&gt; practically of scheme.  I&#39;ve argued that it is, and using Racket<br>
&gt; Scheme to prove my point.  However, on the other side of the debate,<br>
&gt; I&#39;ve noticed that Racket&#39;s string API is missing what I consider to<br>
&gt; be a extremely practical procedure - string-trim.  This procedure is<br>
&gt; actually in srfi 13.  While I can &#39;require&#39; srfi13, I can&#39;t import<br>
&gt; it as is, because sfri-13&#39;s procedures overlap Racket&#39;s string<br>
&gt; procedures.  I believe Racket&#39;s require feature allows me to just<br>
&gt; import those procedures I need from srfi 13, but I find that kind of<br>
&gt; awkward.<br>
&gt;<br>
&gt; My question is, then, why would such a practical procedure missing<br>
&gt; from Racket&#39;s string API?<br>
<br>
</div></div>In no particular order:<br>
<br>
* If two libraries provide the same name, you&#39;d only run into problems<br>
  if you `require&#39; both -- otherwise, as Laurent showed, there<br>
  shouldn&#39;t be any problems.  If you do need to require both, then you<br>
  can use a prefix or grab only the functionality that you need.<br>
<br>
* I don&#39;t see a big meta point about the practicality of Racket<br>
  (&quot;Scheme&quot; is trickier to talk about) -- we did have regexp<br>
  operations for a long time now, and as any Perl hacker knows, you<br>
  don&#39;t need anything more...  But more seriously it definitely means<br>
  that practicality is important.<br>
<br>
* The particular functionality that `string-trim&#39; provides is one that<br>
  can easily be done using regexps.  This is why it wasn&#39;t an urgent<br>
  addition.  That&#39;s not to say that it&#39;s not needed -- and in fact<br>
  this exact point came up recently -- it&#39;s just that if the main goal<br>
  is to provide some simpler interface than regexps, then it&#39;s not<br>
  clear how such an interface should look.<br>
<br>
* As a result of the recent discussion, I&#39;ve added it, and it will be<br>
  included in the next release.  Also, it just happens that you wrote<br>
  this email just when I was working on that exact function.  (We had<br>
  talked about the general interface to these functions and reached<br>
  some conclusions that slightly change the way it&#39;s implemented.)<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:<br>
                    <a href="http://barzilay.org/" target="_blank">http://barzilay.org/</a>                   Maze is Life!<br>
</font></span></blockquote></div><br>