<br><br><div class="gmail_quote">On Sat, Dec 24, 2011 at 10:49 PM, Dan Doel <span dir="ltr">&lt;<a href="mailto:dan.doel@gmail.com">dan.doel@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On Sat, Dec 24, 2011 at 2:31 AM, Albert Y. C. Lai &lt;<a href="mailto:trebla@vex.net">trebla@vex.net</a>&gt; wrote:<br>
&gt; 1. a function f is strict if  f ⊥ = ⊥<br>
&gt; 2. ⊥ represents any computation which does not terminate, i.e. an exception<br>
&gt; or an infinite loop<br>
&gt; 3. &quot;strict&quot; describes the denotational semantics<br>
<br>
</div>All three of these statements are true. The only potentially<br>
controversial one is 2, but any term that the operational semantics<br>
would identify as simple non-termination (which is invariably what<br>
they&#39;re talking about when they say 2; not some partially defined<br>
term) will be given denotation ⊥.<br>
<div class="im"><br>
&gt; B. Actually there are more, but apparently two is already enough to cause<br>
&gt; all kinds of incoherent statements. If I draw your attention to algebraic<br>
&gt; semantics, will you start saying &quot;it is too lazy, need to make it more<br>
&gt; idempotent&quot;?<br>
<br>
</div>Yes, there are more than two. And they don&#39;t exist in completely<br>
separate vacuums from one another. Denotational and operational<br>
properties are sometimes (often?) correlated. And algebraic semantics<br>
is often the sweet spot for reasoning about the structure of the<br>
operational or denotational semantics of your code, without bringing<br>
in all the irrelevant details from the latter two. I can make a<br>
denotational semantics for System F where each term is denoted by its<br>
normal form (an operational concept).<br>
<br>
I think it&#39;s good to be clear on all these specifics, and people could<br>
do with a better recognition of the difference between (non-)strict<br>
and (lazy)eager (hint: you can have an eager, non-strict language).<br></blockquote><div>Can you elaborate? That&#39;s apparently my blind spot.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

But it isn&#39;t necessarily a problem that people speak in terms of more<br>
than one at once. The different kinds of semantics aren&#39;t in conflict<br>
with one another.<br>
<br>
The main problem would be that such casual mixing prevents newcomers<br>
from learning the distinctions by osmosis.<br>
<span class="HOEnZb"><font color="#888888"><br>
-- Dan<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Eugene Kirpichov<br>Principal Engineer, Mirantis Inc. <a href="http://www.mirantis.com/" target="_blank">http://www.mirantis.com/</a><br>Editor, <a href="http://fprog.ru/" target="_blank">http://fprog.ru/</a><br>