<font face="arial" size="2"><p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;">Hi Dan,</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;">A big thumbs up for your work on Erlang, but...</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;">At risk of being tagged culturally insensitive, Is it presumptions of me to ask if we could please split the new Unicode string functions into a separate library and preserve the ascii string functions as we find them in older Erlang versions?</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;">I've been working with ascii string functions but now find the new docs much harder to work with, e.g. to my eye too much visual noise, plus stuff like this:</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;">- string:chr/2 (and rchr/2) returns an index into a string. But we're told "This function is <span class="bold_code bc-17"><a href="http://erlang.org/doc/man/string.html#oldapi">obsolete</a></span>. Use <span class="bold_code bc-17"><a href="http://erlang.org/doc/man/string.html#find-2"><span class="code">find/2</span></a></span>."</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;">  find/2, however, returns "returns the remainder of the string or <span class="code">nomatch</span>...."</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;">- similarly, string:cspan/2 is marked "This function is <span class="bold_code bc-17"><a href="http://erlang.org/doc/man/string.html#oldapi">obsolete</a></span>. Use <span class="bold_code bc-17"><a href="http://erlang.org/doc/man/string.html#take-3"><span class="code">take/3</span></a></span>."</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;">  But string:take/3 returns leading and trailing data.</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;">Plus, I dread the future necessity of rewriting string code.</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;">I can certainly see the value of adding  functions that support Unicode. And applaud them. But stomping on existing ascii functions seems like a stretch too far.</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;">Thanks,</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;">LRP</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: arial; font-size: 10pt; overflow-wrap: break-word;">-----Original Message-----<br />From: "Dan Gudmundsson" <dgud@erlang.org><br />Sent: Friday, July 21, 2017 10:17am<br />To: "Lloyd R. Prentice" <lloyd@writersglen.com>, "zxq9" <zxq9@zxq9.com><br />Cc: erlang-questions@erlang.org<br />Subject: Re: [erlang-questions] Changes to string module<br /><br /></p>
<div id="SafeStyles1500837831">
<div dir="ltr"><br /><br />
<div class="gmail_quote">
<div dir="ltr">On Fri, Jul 21, 2017 at 4:02 PM Lloyd R. Prentice <<a href="mailto:lloyd@writersglen.com">lloyd@writersglen.com</a>> wrote:</div>
<blockquote class="gmail_quote" style="margin: 0 0 0 .8ex; border-left: 1px #ccc solid; padding-left: 1ex;">Hi all,<br /><br /> I can appreciate the reasons for the changes, but it has created moments of frustration for me.<br /><br /> I'm running an earlier version of Erlang. Plan to upgrade, but not yet. My work habit is to frequently consult on-line Erlang docs.<br /><br /> The other day I looked up string:span/2, which I've used in various places throughout my code. But what's this? It's marked "obsolete - use take/2."<br /><br /> I must have caught the docs at a point of transition since there was no take/2 in the list of string functions. What to do? What to do?<br /><br /> That version of the docs seems to have been updated. Both take/2 and span/2 are now in the list.<br /><br /> OK, I can live with momentary and passing frustration. But now, when I upgrade Erlang, do I have to worry that span/2 will be dropped at some point--- after all, it's "obsolete."</blockquote>
<div>It might be dropped at some point, but not in any near future, not until OTP-23 and probably not in that release either.</div>
<div>We will deprecate (and add warnings) and remove the docs of the old functions in OTP-21.</div>
<div>The old functions will be kept.</div>
<blockquote class="gmail_quote" style="margin: 0 0 0 .8ex; border-left: 1px #ccc solid; padding-left: 1ex;"><br /> Or do I have run two versions of Erlang?<br /><br /> Plus, I now find the string docs much harder to use since I have to think about whether a given function is in my version of Erlang or not.<br /><br /> Petty issues and, perhaps the price of progress. But it does illustrate that library revision may have unintended consequences.</blockquote>
<div>The only difference right now (in OTP-20) is the addition of new functions and the text that warns that the old ones will be deprecated in 21.</div>
<div>So the only problem you might get in OTP-21 is deprecated warnings for using old functions which you can suppress.</div>
<div>/Dan</div>
<blockquote class="gmail_quote" style="margin: 0 0 0 .8ex; border-left: 1px #ccc solid; padding-left: 1ex;"><br /> Best wishes,<br /><br /> LRP<br /><br /> Sent from my iPad<br /><br /> > On Jul 21, 2017, at 4:46 AM, zxq9 <<a href="mailto:zxq9@zxq9.com" target="_blank">zxq9@zxq9.com</a>> wrote:<br /> ><br /> > I missed it when looking through R20 release notes, but on referencing the string module I noticed a LOT of changes have happened there. String objects are now more or less based on unicode:chardata() and utf8 graphemes.<br /> ><br /> > Whoever is responsible for this -- THANK YOU.<br /> ><br /> > For those of us in East Asia life just got a bit easier. Not 100% easy, because what fun would that be, but this sure is a lot nicer.<br /> ><br /> > Yay!<br /> > -Craig<br /> > _______________________________________________<br /> > erlang-questions mailing list<br /> > <a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br /> > <a rel="noreferrer" href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br /><br /> _______________________________________________<br /> erlang-questions mailing list<br /><a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br /><a rel="noreferrer" href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a></blockquote>
</div>
</div>
</div></font>