Yes. Better wording would be no externally visible mutation.<br><br>On Thursday, 28 January 2016, David Waite &lt;<a href="mailto:david@alkaline-solutions.com">david@alkaline-solutions.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
&gt; On Jan 27, 2016, at 1:56 PM, Howard Lovatt &lt;<a href="javascript:;" onclick="_e(event, &#39;cvml&#39;, &#39;howard.lovatt@gmail.com&#39;)">howard.lovatt@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt; I would say that if it doesn&#39;t have arguments and doesn&#39;t mutate then it should be a property, since it will read better and is flexible (you can switch between a stored and calculated property without affecting the external interface easily).<br>
<br>
It can mutate as long as the mutation is not externally visible on that interface. An example of this would be if the implementation of Set were internally backed by a Splay Tree, where balancing of the tree happens on every access.<br>
<br>
<a href="https://en.wikipedia.org/wiki/Splay_tree" target="_blank">https://en.wikipedia.org/wiki/Splay_tree</a><br>
<br>
Another example is any computed property ever which output logging.<br>
<br>
-DW<br>
<br>
</blockquote><br><br>-- <br>  -- Howard.<br><br>