<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Aug 31, 2015 at 1:57 PM, Alexey Muranov <span dir="ltr"><<a href="mailto:alexey.muranov@gmail.com" target="_blank">alexey.muranov@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="">On 31 août 2015, at 06:11, Richard A. O'Keefe <<a href="mailto:ok@cs.otago.ac.nz">ok@cs.otago.ac.nz</a>> wrote:<br>
<br>
> Sorry, cliekd the wrong button.<br>
> If you had troubled to read the Wikipedia article with care,<br>
> you'd have seen this right at the beginning:<br>
><br>
>       In computer science, a function or expression is<br>
>                                      VVVVVVVVVVVVVVVVVVVVVVVV<br>
>       said to have a side effect if, in addition to returning<br>
>                                      ^^^^^^^^^^^^^^^^^^^^^^^^<br>
>       a value, it also modifies some state or has an observable<br>
>       interaction with calling functions or the outside world.<br>
><br>
> You have a function, whose purported effect is to return a<br>
> value.  "IN ADDITION TO" that, it has "A SUBSIDIARY CONSEQUENCE",<br>
> "A SECONDARY RESULT".<br>
<br>
</span>In my opinion, with such interpretation there can be no documented side effects: if some effect is documented, it is purported (an probably used by someone), so not secondary.<br>
<span class=""></span><div dir="ltr"><div><div dir="ltr"><div><br></div></div></div></div></blockquote><div><br></div><div>I think this argument represents a generation gap:<br></div><div>Those  brought up on Pascal will find it obvious what Richard (is trying) to say:<br></div><div>- a function either just returns a value or has side-effects<br></div><div>- a procedure has effects -- nothing 'on the side' here.<br><br></div><div>Unfortunately C screwed up a whole generation by removing this distinction from our thinking ontologies<br></div><div>And the languages that have followed C are often worse eg python's None return is more ambiguous than C's void return<br></div><div>eg. Ive found experienced python programmers dont understand that the 'procedure' appellation can only be applied to to functions that ALWAYS return None<br></div><div><br></div><div>One could say that Haskell's monadic types reinstates Pascal's dichotomy<br><br></div><div>More on this here:<br><a href="http://blog.languager.org/2015/06/functional-programming-moving-target.html">http://blog.languager.org/2015/06/functional-programming-moving-target.html</a><br></div><div><br></div></div>
</div></div>