The value of &quot;let x=(1:x); y=(1:y) in x==y&quot; definitely _|_ )bottom) and nothing else.<br>A value of type Bool can be False, True, or _|_ and that expression does not yield a False or True.<br>It has nothing to do with time, it&#39;s just mathematics.
<br>What might be confusing you is that _|_ is often used as a name for non-termination, undefined, error etc.<br><br>&nbsp; -- Lennart<br><br><div class="gmail_quote">On Dec 27, 2007 7:20 PM, Achim Schneider &lt;<a href="mailto:barsoap@web.de">
barsoap@web.de</a>&gt; 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">Jonathan Cast &lt;<a href="mailto:jonathanccast@fastmail.fm">
jonathanccast@fastmail.fm</a>&gt; wrote:<br><br></div><div class="Ih2E3d">&gt; On 27 Dec 2007, at 10:44 AM, Achim Schneider wrote:<br>&gt;<br>&gt; &gt; Wolfgang Jeltsch &lt;<a href="mailto:g9ks157k@acme.softbase.org">g9ks157k@acme.softbase.org
</a>&gt; wrote:<br>&gt; &gt;<br>&gt; &gt;&gt; Am Donnerstag, 27. Dezember 2007 16:34 schrieb Cristian Baboi:<br>&gt; &gt;&gt;&gt; I&#39;ll have to trust you, because I cannot test it.<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt; let x=(1:x); y=(1:y) in x==y .
<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt; I also cannot test this:<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt; let x=(1:x); y=1:1:y in x==y<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; In these examples, x and y denote the same value but the result of
<br>&gt; &gt;&gt; x == y is _|_ (undefined) in both cases. &nbsp;So (==) is not really<br>&gt; &gt;&gt; equality in Haskell but a kind of weak equality: If x doesn't equal<br>&gt; &gt;&gt; y, x == y is False, but if x equals y, x == y might be True or
<br>&gt; &gt;&gt; undefined.<br>&gt; &gt;&gt;<br>&gt; &gt; [1..] == [1..] certainly isn&#39;t undefined, it always evaluates to<br>&gt; &gt; True,<br>&gt;<br>&gt; If something happens, it does eventually happen.<br>&gt;<br>
&gt; More importantly, we can prove that [1..] == [1..] = _|_, since<br>&gt;<br>&gt; &nbsp; &nbsp;[1..] == [1..]<br>&gt; = LUB (n &gt;= 1) [1..n] ++ _|_ == [1..n] ++ _|_<br>&gt; = LUB (n &gt;= 1) _|_<br>&gt; = _|_<br>&gt;<br></div>
As far as I understand<br><a href="http://www.haskell.org/haskellwiki/Bottom" target="_blank">http://www.haskell.org/haskellwiki/Bottom</a><br>, only computations which cannot be successful are bottom, not those<br>that can be successful, but aren&#39;t. Kind of idealizing reality, that is.
<br><br>Confusion of computations vs. reductions and whether time exists or<br>not is included for free here. Actually, modulo mere words, I accept<br>both your and my argument as true, but prefer mine.<br><br>You _do_ accept that you won&#39;t ever see 
Prelude.undefined in ghci<br>when evaluating<br><div class="Ih2E3d">let x=(1:x); y=(1:y) in x==y<br></div>, and there won&#39;t ever be a False in the chain of &amp;&amp;&#39;s, don&#39;t you?<br><br>The question arises, which value is left from the possible values of
<br>Bool when you take away False and _|_?<br><br>And now don&#39;t you dare to say that _|_ /= undefined.<br><div><div></div><div class="Wj3C7c"><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>