Thanks both for the the explanation and the link. The wikibook is really growing fast!<br><br>Abhay<br><br><div class="gmail_quote">On Wed, May 7, 2008 at 5:05 PM, apfelmus <<a href="mailto:apfelmus@quantentunnel.de">apfelmus@quantentunnel.de</a>> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="Ih2E3d">Abhay Parvate wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Just for curiocity, is there a practically useful computation that uses<br>
'seq' in an essential manner, i.e. apart from the efficiency reasons?<br>
</blockquote>
<br></div>
I don't think so because you can always replace seq with const id .<br>
In fact, doing so will get you "more" results, i.e. a computation that<br>
did not terminate may do so now.<br>
<br>
In other words, we have<br>
<br>
seq _|_ = _|_<br>
seq x = id for x > _|_<br>
<br>
but<br>
<br>
(const id) _|_ = id<br>
(const id) x = id for x > _|_<br>
<br>
So, (const id) is always more defined (">") than seq .<br>
<br>
<br>
For more about _|_ and the semantic approximation order, see<br>
<br>
<a href="http://en.wikibooks.org/wiki/Haskell/Denotational_semantics" target="_blank">http://en.wikibooks.org/wiki/Haskell/Denotational_semantics</a><div><div></div><div class="Wj3C7c"><br>
<br>
<br>
Regards,<br>
apfelmus<br>
<br>
<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org" target="_blank">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>