<html><head><style>body{font-family:Helvetica,Arial;font-size:13px}</style></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">That sounds like a good example of what happens when you live in a halfway house - because strings could be mutated you have to  copy / allocate stuff because you can't assume that someone won't mutate the string later, which leads to ugly changes like <a href="https://github.com/rails/rails/commit/9aa2b2d7bf52c0f3974090cd033341be2edeae6d">https://github.com/rails/rails/commit/9aa2b2d7b</a> (although the constant bit isn't needed as of ruby 2.2 - see https://github.com/rails/rails/commit/9f1b5c9b40)</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><br></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">Fred</div><p class="airmail_on" style="color:#000;">On 10 September 2015 at 11:05:48, Stephen Best (<a href="mailto:bestie@gmail.com">bestie@gmail.com</a>) wrote:</p> <blockquote type="cite" class="clean_bq"><span><div><div></div><div>



<title></title>


<div dir="ltr">I believe Camille Baldock made an excellent point in
one of her talks a while back (was it the memory leak one?) where
string allocation was causing significant performance issues, this
was easily solved by mutating strings instead.<br>
<br>
I'm looking forward to string mutability being off by default but I
think the great thing about Ruby is that you can pretty much do
whatever you feel is appropriate.<br>
<div class="gmail_extra">
<div>
<div class="gmail_signature">
<div dir="ltr"><br></div>
</div>
</div>
<br>
<div class="gmail_quote">On 10 September 2015 at 10:53, Riccardo
Tacconi <span dir="ltr"><<a href="mailto:rtacconi@gmail.com" target="_blank">rtacconi@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Yes I can recommend Tom's post to understand how to
build immutable data structures in Ruby. The problem is that Ruby
is mainly an imperative programming language and you will have
harder time to use it in a more functional way then directly using
languages like Haskell. With Rails you will have even harder time
because it is a framework design to change the state of shared
objects. But it is possible and hard to figure out in the beginning
because you are trying to use immutability in a place where
mutability is everywhere (and JC explained that very well).
<div><br></div>
<div>You were talking about Java Strings, I would add that strings
should be immutable, and Ruby should not allow the usage of mutable
strings. Mutable strings do not give any advantage and introduce
only problems.</div>
</div>
<div class="gmail_extra">
<div>
<div class="h5"><br>
<div class="gmail_quote">On 10 September 2015 at 10:39, Tom Stuart
<span dir="ltr"><<a href="mailto:tom@codon.com" target="_blank">tom@codon.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span>On 10 Sep 2015, at 10:34, Stephen Best <<a href="mailto:bestie@gmail.com" target="_blank">bestie@gmail.com</a>>
wrote:<br>
> In every example I've seen immutability has certainly required
more effort, but I don't think this always correlates with more
complexity.<br>
<br></span>This reminds me (belatedly) of a bit I wrote last
year, on implementing immutable trees: <a href="http://codon.com/notes-on-counting-tree-nodes#immutable-trees" rel="noreferrer" target="_blank">http://codon.com/notes-on-counting-tree-nodes#immutable-trees</a><br>

<br>
I wrote that in an attempt to demonstrate how immutability can be
useful — in that particular case, by making a data structure
correct by construction, rather than having to write extra code to
deal with malformed trees and so on. So I think that’s a decent
example of how “more effort” (to implement the operations without
mutation) leads to “[less] complexity” (because the resulting code
is ultimately simpler to work with).<br>
<br>
Cheers,<br>
-Tom<br>
<div>
<div>_______________________________________________<br>
Chat mailing list<br>
<a href="mailto:Chat@lists.lrug.org" target="_blank">Chat@lists.lrug.org</a><br>
Archives: <a href="http://lists.lrug.org/pipermail/chat-lrug.org" rel="noreferrer" target="_blank">http://lists.lrug.org/pipermail/chat-lrug.org</a><br>
Manage your subscription: <a href="http://lists.lrug.org/options.cgi/chat-lrug.org" rel="noreferrer" target="_blank">http://lists.lrug.org/options.cgi/chat-lrug.org</a><br>
List info: <a href="http://lists.lrug.org/listinfo.cgi/chat-lrug.org" rel="noreferrer" target="_blank">http://lists.lrug.org/listinfo.cgi/chat-lrug.org</a><br></div>
</div>
</blockquote>
</div>
<br>
<br clear="all">
<div><br></div>
</div>
</div>
<span class="HOEnZb"><font color="#888888">--<br></font></span>
<div>
<div dir="ltr"><span class="HOEnZb"><font color="#888888">Riccardo
Tacconi<br>
<br>
<a href="http://github.com/rtacconi" target="_blank">http://github.com/rtacconi</a><br>
<a href="http://twitter.com/rtacconi" target="_blank">http://twitter.com/rtacconi</a></font></span></div>
</div>
</div>
<br>
_______________________________________________<br>
Chat mailing list<br>
<a href="mailto:Chat@lists.lrug.org">Chat@lists.lrug.org</a><br>
Archives: <a href="http://lists.lrug.org/pipermail/chat-lrug.org" rel="noreferrer" target="_blank">http://lists.lrug.org/pipermail/chat-lrug.org</a><br>
Manage your subscription: <a href="http://lists.lrug.org/options.cgi/chat-lrug.org" rel="noreferrer" target="_blank">http://lists.lrug.org/options.cgi/chat-lrug.org</a><br>
List info: <a href="http://lists.lrug.org/listinfo.cgi/chat-lrug.org" rel="noreferrer" target="_blank">http://lists.lrug.org/listinfo.cgi/chat-lrug.org</a><br>
<br></blockquote>
</div>
<br></div>
</div>


_______________________________________________
<br>Chat mailing list
<br>Chat@lists.lrug.org
<br>Archives: http://lists.lrug.org/pipermail/chat-lrug.org
<br>Manage your subscription: http://lists.lrug.org/options.cgi/chat-lrug.org
<br>List info: http://lists.lrug.org/listinfo.cgi/chat-lrug.org
<br></div></div></span></blockquote></body></html>