<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jul 1, 2013 at 4:57 PM, Julien Fischer <span dir="ltr"><<a href="mailto:jfischer@opturion.com" target="_blank">jfischer@opturion.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im"><br>
On Mon, 1 Jul 2013, Paul Bone wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
For review by anyuone.<br>
<br>
Added cord.condense/2<br>
<br>
library/cord.m:<br>
   Added new predicate and function<br>
</blockquote>
<br></div>
Full stop after that.<br>
<br>
<br>
I don't think there should be a predicate version.<br>
(I know the list module often defines both predicate and function<br>
versions of things that are naturally functions, but that's largely for<br>
historical reasons.)<br></blockquote><div><br></div><div>Actually, in some cases we have the predicate versions because they</div><div>are useful with state variables -- I don't think that's likely to be the case</div>
<div>with condense though because the input and output types differ.</div><div><br></div><div>( Aside: it did occur to me that the following extension to state variable notation might</div><div>be nice for function applications:</div>
<div><br></div><div>    !A = foo</div><div><br></div><div>    ===> !:A = foo(!.A)</div><div><br></div><div>or more generally:</div><div><br></div><div>    !A = foo(B1, B2, ..., BN)</div><div><br></div><div>    ===> !:A = foo(B1, B2, ..., BN, !.A)</div>
<div>   </div><div>).</div><div><br></div><div>Cheers,</div><div>Julien.</div><div><br></div><div><br></div><div> </div></div><br></div></div>