<br><br><div class="gmail_quote">On Sat, Dec 24, 2011 at 10:49 PM, Dan Doel <span dir="ltr"><<a href="mailto:dan.doel@gmail.com">dan.doel@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 class="im">On Sat, Dec 24, 2011 at 2:31 AM, Albert Y. C. Lai <<a href="mailto:trebla@vex.net">trebla@vex.net</a>> wrote:<br>
> 1. a function f is strict if f ⊥ = ⊥<br>
> 2. ⊥ represents any computation which does not terminate, i.e. an exception<br>
> or an infinite loop<br>
> 3. "strict" 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're talking about when they say 2; not some partially defined<br>
term) will be given denotation ⊥.<br>
<div class="im"><br>
> B. Actually there are more, but apparently two is already enough to cause<br>
> all kinds of incoherent statements. If I draw your attention to algebraic<br>
> semantics, will you start saying "it is too lazy, need to make it more<br>
> idempotent"?<br>
<br>
</div>Yes, there are more than two. And they don'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'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'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't necessarily a problem that people speak in terms of more<br>
than one at once. The different kinds of semantics aren'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>