<div dir="ltr">What is Rope? do you have a link to the definition/paper? <div><br></div><div>Thanks!</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, May 8, 2020 at 11:48 AM <<a href="mailto:ken.dickey@whidbey.com">ken.dickey@whidbey.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 2020-05-08 06:15, Juan Vuletich via Cuis-dev wrote:<br>
<br>
Something else that would be great is to gradually make Strings <br>
immutable. That would allow us to replace String with Rope if desired.<br>
<br>
Actually, Ropes are (or are supposed to be) immutable.<br>
<br>
Strings to Ropes is more of a style change.<br>
<br>
The main difference is that operations on ropes (e.g. #at:put:) return a <br>
_new_ rope, where Strings are mutated in place.  So the first change <br>
would be ensuring all String mutators return a reference to the mutated <br>
String instance and all senders use the latest reference.<br>
<br>
This can make Undo easier.  Just chain/push ref to previous ropes.  Undo <br>
is pop last & redraw.<br>
<br>
If we made Text operations functional as well, TextEditor should have a <br>
simplified Undo.<br>
<br>
Different costs.<br>
<br>
Note that I did Ropes as preparation for using them in Unicode, where <br>
UniChars can be 1, 2, or 4 bytes.  When inserting a Chinese character in <br>
an ASCII text string in Squeak, the Chinese character is a "wide" <br>
character, so Squeak changes the entire String to *all* wide characters, <br>
doubling its storage size.  UniStrings are Ropes, so adding a Chinese <br>
UniChar just keeps a reference to the old Rope and remembers where the <br>
new char is for #at: and #at:put: .  This memory is _much_ cheaper than <br>
doubling storage for the large strings typically used in text editing.<br>
<br>
Details in EnhancedText repository.<br>
<br>
Cheer,<br>
-KenD<br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><span style="font-family:tahoma,sans-serif;font-size:xx-small;border-collapse:collapse"><strong><span style="font-size:8pt"><span><span style="font-size:small"><font size="2"><span style="font-weight:normal"><span style="font-weight:bold">Hernán Wilkinson</span><br>Agile Software Development, Teaching & Coaching</span></font></span></span></span></strong></span></div><div><span style="font-family:tahoma,sans-serif;font-size:xx-small;border-collapse:collapse"><strong><span style="font-size:8pt"><span><span style="font-size:small"><font size="2"><span style="font-weight:normal">Phone: +54-011</span></font></span></span></span></strong></span><font face="tahoma, sans-serif" size="2">-4893-2057</font></div><div><strong style="font-family:tahoma,sans-serif;font-size:xx-small"><span style="font-size:8pt"><span style="font-size:small"><font size="2"><span style="font-weight:normal">Twitter: @HernanWilkinson</span></font></span></span></strong></div><div><span style="font-family:tahoma,sans-serif;font-size:xx-small;border-collapse:collapse"><strong><span style="font-size:8pt"><span><span style="font-size:small"><font size="2"><span style="font-weight:normal">site: <a href="http://www.10pines.com/" style="color:rgb(17,65,112)" target="_blank">http://www.10Pines.com</a></span></font></span></span></span></strong></span></div><div><font face="tahoma, sans-serif"><span style="border-collapse:collapse">Address: Alem 896</span></font>, Floor 6, Buenos Aires, Argentina</div></div></div></div></div></div></div></div></div></div></div></div>