Hm.&nbsp; Isn&#39;t _|_ simply, by definition, the bottom (least) element in an ordering?&nbsp; I see merit in Haskell&#39;s choice that () /= _|_, but so far I&#39;m not persuaded that it&#39;s the only possible choice.<br><br><div class="gmail_quote">
On Sat, Jan 24, 2009 at 1:47 PM, Lennart Augustsson <span dir="ltr">&lt;<a href="mailto:lennart@augustsson.net">lennart@augustsson.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
You can dream up any semantics you like about bottom, like it has to<br>
be () for the unit type.<br>
But it&#39;s simply not true. &nbsp;I suggest you do some cursory study of<br>
denotational semantics and domain theory.<br>
Ordinary programming languages include non-termination, so that has to<br>
be captured somehow in the semantics.<br>
And that&#39;s what bottom does.<br>
<font color="#888888"><br>
 &nbsp;-- Lennart<br>
</font><div><div></div><div class="Wj3C7c"><br>
On Sat, Jan 24, 2009 at 9:31 PM, Thomas Davie &lt;<a href="mailto:tom.davie@gmail.com">tom.davie@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt; On 24 Jan 2009, at 22:19, Henning Thielemann wrote:<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Sat, 24 Jan 2009, Thomas Davie wrote:<br>
&gt;&gt;<br>
&gt;&gt;&gt; On 24 Jan 2009, at 21:31, Dan Doel wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; For integers, is _|_ equal to 0? 1? 2? ...<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Hypothetically (as it&#39;s already been pointed out that this is not the<br>
&gt;&gt;&gt; case in Haskell), _|_ in the integers would not be known, until it became<br>
&gt;&gt;&gt; more defined. &nbsp;I&#39;m coming at this from the point of view that bottom would<br>
&gt;&gt;&gt; contain all the information we could possibly know about a value &nbsp;while<br>
&gt;&gt;&gt; still being the least value in the set.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; In such a scheme, bottom for Unit would be (), as we always know that the<br>
&gt;&gt;&gt; value in that type is (); bottom for pairs would be (_|_, _|_), as all pairs<br>
&gt;&gt;&gt; look like that (this incidentally would allow fmap and second to be equal on<br>
&gt;&gt;&gt; pairs); bottom for integers would contain no information, etc.<br>
&gt;&gt;<br>
&gt;&gt; Zero- and one-constructor data types would then significantly differ from<br>
&gt;&gt; two- and more-constructor data types, wouldn&#39;t they?<br>
&gt;<br>
&gt; Yes, they would, but not in any way that&#39;s defined, or written in, the fact<br>
&gt; that they have a nice property of being able to tell something about what<br>
&gt; bottom looks like is rather nice actually.<br>
&gt;<br>
&gt; Bob<br>
&gt; _______________________________________________<br>
&gt; Haskell-Cafe mailing list<br>
&gt; <a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
&gt; <a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
&gt;<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>