<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:old.nabble.com,2006:forum-30217</id>
	<title>Nabble - Scala - User</title>
	<updated>2009-11-24T00:54:18Z</updated>
	<link rel="self" type="application/atom+xml" href="http://old.nabble.com/Scala---User-f30217.xml" />
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Scala---User-f30217.html" />
	<subtitle type="html"></subtitle>
	
<entry>
	<id>tag:old.nabble.com,2006:post-26492479</id>
	<title>.asViewOf[T], .isViewOf[T] for &lt;% relationship</title>
	<published>2009-11-24T00:54:18Z</published>
	<updated>2009-11-24T00:54:18Z</updated>
	<author>
		<name>Ken Scambler</name>
	</author>
	<content type="html">It seems very strange to me that there are no methods on the Any class corresponding to the &amp;lt;% type relationship, ie. def asViewOf[T]:T and def isViewOf[T]:Boolean, in the same manner as the .isInstanceOf[T] and .asInstanceOf[T] methods. 
&lt;br&gt;&lt;br&gt;I've run into a few situations where it would have been handy -- does anyone else agree? It seems a glaring omission.</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/.asViewOf-T-%2C-.isViewOf-T--for-%3C--relationship-tp26492479p26492479.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26491808</id>
	<title>Re: Continuation on Tasks</title>
	<published>2009-11-23T23:55:19Z</published>
	<updated>2009-11-23T23:55:19Z</updated>
	<author>
		<name>Meredith Gregory</name>
	</author>
	<content type="html">Dear Kai,&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;i forgot to include a trace of the unit test.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Best wishes,&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--greg&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Welcome to Scala version 2.8.0.r18915-b20091004170819 (Java HotSpot(TM) Client VM, Java 1.5.0_20).&lt;/div&gt;
&lt;div&gt;Type in expressions to have them evaluated.&lt;/div&gt;&lt;div&gt;Type :help for more information.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;scala&amp;gt; import com.biosimilarity.validation._&lt;/div&gt;&lt;div&gt;import com.biosimilarity.validation._&lt;/div&gt;&lt;div&gt;
import com.biosimilarity.validation._&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;scala&amp;gt; TheModChoice.select( List( 1, 2, 3 ) )&lt;/div&gt;&lt;div&gt;TheModChoice.select( List( 1, 2, 3 ) )&lt;/div&gt;&lt;div&gt;a new beginning...&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;scala&amp;gt; a new beginning...&lt;/div&gt;
&lt;div&gt;found a result: 2&lt;/div&gt;&lt;div&gt;the winner is: ModWorker(2,TheModChoice)&lt;/div&gt;&lt;div&gt;a new beginning...&lt;/div&gt;&lt;div&gt;working...&lt;/div&gt;&lt;div&gt;stopping!&lt;/div&gt;&lt;div&gt;stopping!&lt;/div&gt;&lt;div&gt;TheModChoice.showWorkerStatus&lt;/div&gt;&lt;div&gt;TheModChoice.showWorkerStatus&lt;/div&gt;
&lt;div&gt;ModWorker(1,TheModChoice) has status Some(Aborted())&lt;/div&gt;&lt;div&gt;ModWorker(2,TheModChoice) has status Some(Complete())&lt;/div&gt;&lt;div&gt;ModWorker(3,TheModChoice) has status Some(Aborted())&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;scala&amp;gt; :q&lt;/div&gt;
&lt;div&gt;:q&lt;/div&gt;&lt;div&gt;[INFO] ------------------------------------------------------------------------&lt;/div&gt;&lt;div&gt;[INFO] BUILD SUCCESSFUL&lt;/div&gt;&lt;div&gt;[INFO] ------------------------------------------------------------------------&lt;/div&gt;
&lt;div&gt;[INFO] Total time: 1 minute 3 seconds&lt;/div&gt;&lt;div&gt;[INFO] Finished at: Mon Nov 23 23:42:25 PST 2009&lt;/div&gt;&lt;div&gt;[INFO] Final Memory: 32M/63M&lt;/div&gt;&lt;div&gt;[INFO] ------------------------------------------------------------------------&lt;/div&gt;
&lt;div&gt;bash-3.2$&lt;/div&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Mon, Nov 23, 2009 at 11:47 PM, Meredith Gregory &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26491808&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;lgreg.meredith@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;&quot;&gt;
Dear Kai,&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;You can grab a continuation and pass it to each worker, when anyone of them fires the continuation arrange that it continues at the point of ending tasks still underway. You can see a running implementation &lt;a href=&quot;http://github.com/leithaus/XTrace/blob/master/src/main/scala/com/biosimilarity/validation/Choice.scala&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;here&lt;/a&gt;. &lt;br&gt;

&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;However, before looking at fancy solutions i note that you need to know the status of tasks during the dispatching phase. Hence, you might consider a status report (say &lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;case class Status( task, complete, success )&lt;/font&gt; ) as the event that causes the next dispatch of task. A status report of completion &amp;amp; success would cause the end of task dispatching and -- if required -- send out ending of work on the already dispatched tasks.&lt;/div&gt;


&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family:&amp;#39;courier new&amp;#39;, monospace&quot;&gt;// inside the defn of act of a dispatcher we find&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family:&amp;#39;courier new&amp;#39;, monospace&quot;&gt;// the dispatcher maintains state:&lt;/span&gt;&lt;/div&gt;


&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;// stillWaiting : Boolean&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;// tasks : Stream[Task]&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;// ignoring end-of-stream conditions...&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;react {&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;    //&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;    case Init( taskStream ) =&amp;gt; { &lt;/font&gt;&lt;/div&gt;&lt;div&gt;
&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;        stillWaiting = true;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;        tasks = taskStream;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;        val worker = new Worker();&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;        workers += worker&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;        worker ! beginWork( taskStream.next, this )&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;     }&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;    case Status( task, false, _ ) =&amp;gt; {&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;       if (stillWaiting) {&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;       val worker = new Worker();&lt;/font&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;        workers += worker&lt;/font&gt;&lt;/div&gt;
&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;        worker ! beginWork( taskStream.next, this )&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;       }&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;     }  &lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;    case Status( task, true, false ) =&amp;gt; {&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;       if (stillWaiting) {&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;       val worker = new Worker();&lt;/font&gt;&lt;div&gt;
&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;        workers += worker&lt;/font&gt;&lt;/div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;        worker ! beginWork( taskStream.next, this )&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;       }&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;     }  &lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;    case Status( task, true, true ) =&amp;gt; {&lt;/font&gt;&lt;/div&gt;


&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;       stillWaiting = false;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;       workers.foreach( w =&amp;gt; w ! Stop() )&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;     }  &lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;}&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Best wishes,&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--greg&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;h5&quot;&gt;
&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;
On Fri, Nov 20, 2009 at 9:46 AM, Kai Meder &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26491808&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;stuff@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;
&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex&quot;&gt;&lt;br&gt;
Hello,&lt;br&gt;
&lt;br&gt;
I want to process tasks successively in a continuation.&lt;br&gt;
The first successful Task (an Actor-Message), determined by a predicate,&lt;br&gt;
shall&lt;br&gt;
terminate/short-circuit the processing of the following tasks and return&lt;br&gt;
its result.&lt;br&gt;
&lt;br&gt;
Is there any predefined Library for that purpose?&lt;br&gt;
Do I have to use something like a Maybe/Option-Monad?&lt;br&gt;
&lt;br&gt;
Thanks alot,&lt;br&gt;&lt;font color=&quot;#888888&quot;&gt;
Kai&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/font&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;br clear=&quot;all&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;-- &lt;br&gt;L.G. Meredith&lt;br&gt;Managing Partner&lt;br&gt;Biosimilarity LLC&lt;br&gt;1219 NW 83rd St &lt;br&gt;Seattle, WA 98117&lt;br&gt;&lt;br&gt;+1 206.650.3740&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://biosimilarity.blogspot.com&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://biosimilarity.blogspot.com&lt;/a&gt;&lt;br&gt;



&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;br clear=&quot;all&quot;&gt;&lt;br&gt;-- &lt;br&gt;L.G. Meredith&lt;br&gt;Managing Partner&lt;br&gt;Biosimilarity LLC&lt;br&gt;1219 NW 83rd St &lt;br&gt;Seattle, WA 98117&lt;br&gt;&lt;br&gt;+1 206.650.3740&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://biosimilarity.blogspot.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://biosimilarity.blogspot.com&lt;/a&gt;&lt;br&gt;

&lt;/div&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Continuation-on-Tasks-tp26447490p26491808.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26491701</id>
	<title>Re: Continuation on Tasks</title>
	<published>2009-11-23T23:47:21Z</published>
	<updated>2009-11-23T23:47:21Z</updated>
	<author>
		<name>Meredith Gregory</name>
	</author>
	<content type="html">Dear Kai,&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;You can grab a continuation and pass it to each worker, when anyone of them fires the continuation arrange that it continues at the point of ending tasks still underway. You can see a running implementation &lt;a href=&quot;http://github.com/leithaus/XTrace/blob/master/src/main/scala/com/biosimilarity/validation/Choice.scala&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;here&lt;/a&gt;. &lt;br&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;However, before looking at fancy solutions i note that you need to know the status of tasks during the dispatching phase. Hence, you might consider a status report (say &lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;case class Status( task, complete, success )&lt;/font&gt; ) as the event that causes the next dispatch of task. A status report of completion &amp;amp; success would cause the end of task dispatching and -- if required -- send out ending of work on the already dispatched tasks.&lt;/div&gt;

&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family:&amp;#39;courier new&amp;#39;, monospace&quot;&gt;// inside the defn of act of a dispatcher we find&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family:&amp;#39;courier new&amp;#39;, monospace&quot;&gt;// the dispatcher maintains state:&lt;/span&gt;&lt;/div&gt;

&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;// stillWaiting : Boolean&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;// tasks : Stream[Task]&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;// ignoring end-of-stream conditions...&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;react {&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;    //&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;    case Init( taskStream ) =&amp;gt; { &lt;/font&gt;&lt;/div&gt;&lt;div&gt;
&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;        stillWaiting = true;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;        tasks = taskStream;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;        val worker = new Worker();&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;        workers += worker&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;        worker ! beginWork( taskStream.next, this )&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;     }&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;    case Status( task, false, _ ) =&amp;gt; {&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;       if (stillWaiting) {&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;       val worker = new Worker();&lt;/font&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;        workers += worker&lt;/font&gt;&lt;/div&gt;
&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;        worker ! beginWork( taskStream.next, this )&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;       }&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;     }  &lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;    case Status( task, true, false ) =&amp;gt; {&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;       if (stillWaiting) {&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;       val worker = new Worker();&lt;/font&gt;&lt;div&gt;
&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;        workers += worker&lt;/font&gt;&lt;/div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;        worker ! beginWork( taskStream.next, this )&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;       }&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;     }  &lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;    case Status( task, true, true ) =&amp;gt; {&lt;/font&gt;&lt;/div&gt;

&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;       stillWaiting = false;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;       workers.foreach( w =&amp;gt; w ! Stop() )&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;     }  &lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;}&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Best wishes,&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--greg&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;
On Fri, Nov 20, 2009 at 9:46 AM, Kai Meder &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26491701&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;stuff@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;
&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex&quot;&gt;&lt;br&gt;
Hello,&lt;br&gt;
&lt;br&gt;
I want to process tasks successively in a continuation.&lt;br&gt;
The first successful Task (an Actor-Message), determined by a predicate,&lt;br&gt;
shall&lt;br&gt;
terminate/short-circuit the processing of the following tasks and return&lt;br&gt;
its result.&lt;br&gt;
&lt;br&gt;
Is there any predefined Library for that purpose?&lt;br&gt;
Do I have to use something like a Maybe/Option-Monad?&lt;br&gt;
&lt;br&gt;
Thanks alot,&lt;br&gt;&lt;font color=&quot;#888888&quot;&gt;
Kai&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/font&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;br clear=&quot;all&quot;&gt;&lt;br&gt;-- &lt;br&gt;L.G. Meredith&lt;br&gt;Managing Partner&lt;br&gt;Biosimilarity LLC&lt;br&gt;1219 NW 83rd St &lt;br&gt;Seattle, WA 98117&lt;br&gt;&lt;br&gt;+1 206.650.3740&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://biosimilarity.blogspot.com&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://biosimilarity.blogspot.com&lt;/a&gt;&lt;br&gt;


&lt;/div&gt;
&lt;/div&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Continuation-on-Tasks-tp26447490p26491701.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26491212</id>
	<title>Re: Current directory</title>
	<published>2009-11-23T22:52:00Z</published>
	<updated>2009-11-23T22:52:00Z</updated>
	<author>
		<name>Kevin Wright-4</name>
	</author>
	<content type="html">&lt;div&gt;&lt;br&gt;&lt;/div&gt;It&amp;#39;s very unfortunate about the naming on that one though, far too close to user.home for my comfort...&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Tue, Nov 24, 2009 at 12:45 AM, Tony Morris &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26491212&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;tonymorris@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;
&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;&quot;&gt;Same way you do in Java&lt;br&gt;
&lt;br&gt;
scala&amp;gt; val whereami = System.getProperty(&amp;quot;user.dir&amp;quot;)&lt;br&gt;
whereami: java.lang.String = /tmp&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://java.sun.com/javase/6/docs/api/java/lang/System.html#getProperties()&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://java.sun.com/javase/6/docs/api/java/lang/System.html#getProperties()&lt;/a&gt;&lt;br&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;h5&quot;&gt;&lt;br&gt;
&lt;br&gt;
Charles F. Munat wrote:&lt;br&gt;
&amp;gt; How does one determine the current directory in Scala? Dumb question,&lt;br&gt;
&amp;gt; I know, but this is the sort of thing you can search for for hours. I&lt;br&gt;
&amp;gt; presume it&amp;#39;s Java, not Scala. Anyone know this off the top of his/her&lt;br&gt;
&amp;gt; head?&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; Thanks.&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; Chas.&lt;br&gt;
&amp;gt;&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;/div&gt;&lt;font color=&quot;#888888&quot;&gt;--&lt;br&gt;
Tony Morris&lt;br&gt;
&lt;a href=&quot;http://tmorris.net/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://tmorris.net/&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/font&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Current-directory-tp26488645p26491212.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26491136</id>
	<title>parameter type not matched to return type</title>
	<published>2009-11-23T22:40:47Z</published>
	<updated>2009-11-23T22:40:47Z</updated>
	<author>
		<name>braver</name>
	</author>
	<content type="html">I've upgraded Alex Azarov's excellent mongo-scala-driver (&lt;a href=&quot;http://wiki.github.com/alaz/mongo-scala-driver/howto-getting-started&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://wiki.github.com/alaz/mongo-scala-driver/howto-getting-started&lt;/a&gt;) to Scala 2.8 and it compiled fine (&lt;a href=&quot;http://github.com/alexy/mongo-scala-driver&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://github.com/alexy/mongo-scala-driver&lt;/a&gt;). &amp;nbsp;Now I've done it again with the latest nightly and it gave me two type errors. &amp;nbsp;Here they are as explained types, maven output:
&lt;br&gt;&lt;br&gt;[ERROR] /s/w/scala/mongo/alexyk/src/main/scala/com/osinka/mongodb/shape/Implicits.scala:12: error: type mismatch;
&lt;br&gt;[INFO] &amp;nbsp;found &amp;nbsp; : coll.Self
&lt;br&gt;[INFO] &amp;nbsp;required: Coll
&lt;br&gt;[INFO] &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; def in[Coll &amp;lt;: QueriedCollection[T, Coll]](coll: QueriedCollection[T, Coll]): Coll = coll.applied(q.query)
&lt;br&gt;&lt;br&gt;&lt;br&gt;[ERROR] /s/w/scala/mongo/alexyk/src/main/scala/com/osinka/mongodb/Preamble.scala:21: error: type mismatch;
&lt;br&gt;[INFO] &amp;nbsp;found &amp;nbsp; : coll.Self
&lt;br&gt;[INFO] &amp;nbsp;required: Self
&lt;br&gt;[INFO] &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; def in(coll: QueriedCollection[T, Self]): Self = coll.applied(q)
&lt;br&gt;[INFO] &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;^
&lt;br&gt;[ERROR] /s/w/scala/mongo/alexyk/src/main/scala/com/osinka/mongodb/Preamble.scala:21: error: type mismatch;coll.Self &amp;lt;: Self?
&lt;br&gt;&lt;br&gt;The trait in question is defined thus:
&lt;br&gt;&lt;br&gt;trait QueriedCollection[T, Self &amp;lt;: QueriedCollection[T, Self]] extends MongoCollection[T] {
&lt;br&gt;&amp;nbsp; &amp;nbsp; def query: Query
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; def applied(q: Query): Self
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; // -- MongoCollection[T]
&lt;br&gt;&amp;nbsp; &amp;nbsp; override def find = find(query)
&lt;br&gt;&amp;nbsp; &amp;nbsp; override def firstOption = findOne(query)
&lt;br&gt;&amp;nbsp; &amp;nbsp; override def sizeEstimate = getCount(query)
&lt;br&gt;}
&lt;br&gt;Apparently, that Self returned via def applied is treated as coll.Self in the errors above, and not as the same Self supposedly given as a parameter. &amp;nbsp;Why is that, and why could have it changed recently, if it did?
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;Alexy</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/parameter-type-not-matched-to-return-type-tp26491136p26491136.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26490422</id>
	<title>Linearization</title>
	<published>2009-11-23T20:41:34Z</published>
	<updated>2009-11-23T20:41:34Z</updated>
	<author>
		<name>Oscar Picasso-4</name>
	</author>
	<content type="html">Hi,&lt;br&gt;&lt;br&gt;How to print the linearization of a class from one of its instance?&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Linearization-tp26490422p26490422.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26488780</id>
	<title>Re: Current directory</title>
	<published>2009-11-23T16:45:21Z</published>
	<updated>2009-11-23T16:45:21Z</updated>
	<author>
		<name>Tony Morris-4</name>
	</author>
	<content type="html">Same way you do in Java
&lt;br&gt;&lt;br&gt;scala&amp;gt; val whereami = System.getProperty(&amp;quot;user.dir&amp;quot;)
&lt;br&gt;whereami: java.lang.String = /tmp
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://java.sun.com/javase/6/docs/api/java/lang/System.html#getProperties(&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://java.sun.com/javase/6/docs/api/java/lang/System.html#getProperties(&lt;/a&gt;)
&lt;br&gt;&lt;br&gt;&lt;br&gt;Charles F. Munat wrote:
&lt;br&gt;&amp;gt; How does one determine the current directory in Scala? Dumb question,
&lt;br&gt;&amp;gt; I know, but this is the sort of thing you can search for for hours. I
&lt;br&gt;&amp;gt; presume it's Java, not Scala. Anyone know this off the top of his/her
&lt;br&gt;&amp;gt; head?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Chas.
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Tony Morris
&lt;br&gt;&lt;a href=&quot;http://tmorris.net/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://tmorris.net/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Current-directory-tp26488645p26488780.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26488772</id>
	<title>Re: Current directory</title>
	<published>2009-11-23T16:45:19Z</published>
	<updated>2009-11-23T16:45:19Z</updated>
	<author>
		<name>Naftoli Gugenheim</name>
	</author>
	<content type="html">&lt;div&gt;scala&amp;gt; new java.io.File(&amp;quot;.&amp;quot;).getAbsolutePath&lt;/div&gt;&lt;div&gt;res1: java.lang.String = C:\Users\Naftoli\.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;scala&amp;gt; new java.io.File(&amp;quot;.&amp;quot;).getCanonicalPath&lt;/div&gt;&lt;div&gt;res2: java.lang.String = C:\Users\Naftoli&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Mon, Nov 23, 2009 at 7:41 PM, Stepan Koltsov &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26488772&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;stepancheg@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;&quot;&gt;
new File(&amp;quot;.&amp;quot;).getAbsolutePath()&lt;br&gt;
&lt;font color=&quot;#888888&quot;&gt;&lt;br&gt;
S.&lt;br&gt;
&lt;/font&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;h5&quot;&gt;&lt;br&gt;
&lt;br&gt;
On Tue, Nov 24, 2009 at 03:33, Charles F. Munat &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26488772&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;chas@...&lt;/a&gt;&amp;gt; wrote:&lt;br&gt;
&amp;gt; How does one determine the current directory in Scala? Dumb question, I&lt;br&gt;
&amp;gt; know, but this is the sort of thing you can search for for hours. I presume&lt;br&gt;
&amp;gt; it&amp;#39;s Java, not Scala. Anyone know this off the top of his/her head?&lt;br&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Current-directory-tp26488645p26488772.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26488742</id>
	<title>Re: Current directory</title>
	<published>2009-11-23T16:41:53Z</published>
	<updated>2009-11-23T16:41:53Z</updated>
	<author>
		<name>Stepan Koltsov-5</name>
	</author>
	<content type="html">new File(&amp;quot;.&amp;quot;).getAbsolutePath()
&lt;br&gt;&lt;br&gt;S.
&lt;br&gt;&lt;br&gt;&lt;br&gt;On Tue, Nov 24, 2009 at 03:33, Charles F. Munat &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26488742&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;chas@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; How does one determine the current directory in Scala? Dumb question, I
&lt;br&gt;&amp;gt; know, but this is the sort of thing you can search for for hours. I presume
&lt;br&gt;&amp;gt; it's Java, not Scala. Anyone know this off the top of his/her head?
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Current-directory-tp26488645p26488742.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26488700</id>
	<title>Re: Current directory</title>
	<published>2009-11-23T16:37:28Z</published>
	<updated>2009-11-23T16:37:28Z</updated>
	<author>
		<name>Naftoli Gugenheim</name>
	</author>
	<content type="html">Don&amp;#39;t know if it&amp;#39;s the best way, but try new File(&amp;quot;.&amp;quot;).getCanonicalPath().&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Mon, Nov 23, 2009 at 7:33 PM, Charles F. Munat &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26488700&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;chas@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;
&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;&quot;&gt;How does one determine the current directory in Scala? Dumb question, I know, but this is the sort of thing you can search for for hours. I presume it&amp;#39;s Java, not Scala. Anyone know this off the top of his/her head?&lt;br&gt;

&lt;br&gt;
Thanks.&lt;br&gt;
&lt;br&gt;
Chas.&lt;br&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Current-directory-tp26488645p26488700.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26488645</id>
	<title>Current directory</title>
	<published>2009-11-23T16:33:10Z</published>
	<updated>2009-11-23T16:33:10Z</updated>
	<author>
		<name>Charles Munat</name>
	</author>
	<content type="html">How does one determine the current directory in Scala? Dumb question, I 
&lt;br&gt;know, but this is the sort of thing you can search for for hours. I 
&lt;br&gt;presume it's Java, not Scala. Anyone know this off the top of his/her head?
&lt;br&gt;&lt;br&gt;Thanks.
&lt;br&gt;&lt;br&gt;Chas.
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Current-directory-tp26488645p26488645.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26487967</id>
	<title>Re: Re: swing.TextField generates EditDone event when  losing focus</title>
	<published>2009-11-23T15:22:38Z</published>
	<updated>2009-11-23T15:22:38Z</updated>
	<author>
		<name>Ingo Maier-2</name>
	</author>
	<content type="html">&lt;div&gt;You need to listenTo(textField.keys). This is one of the unfortunate points of the publisher/reactor design. In order to make things more efficient, components do not publish all events themselves. See Component.mouse, Component.keys and ListView.selection for examples. Also look into the test package which is part of the scala.swing distribution, do a grep, and you may find what you need. For your specific case, there is the painting demo (not in 2.7.x I believe but in 2.8/trunk) which also reacts to key events.&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Ingo&lt;br&gt;&lt;br&gt;&lt;/div&gt;
&lt;div class=&quot;gmail_quote&quot;&gt;On Mon, Nov 23, 2009 at 12:33 PM, nikolaj lindberg &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26487967&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;nikolaj.lindberg@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;
&lt;blockquote style=&quot;BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex&quot; class=&quot;gmail_quote&quot;&gt;&lt;br&gt;
&lt;div class=&quot;gmail_quote&quot;&gt;
&lt;div class=&quot;im&quot;&gt;On Mon, Nov 23, 2009 at 7:40 PM, Ingo Maier &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26487967&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ingoem@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;
&lt;blockquote style=&quot;BORDER-LEFT: rgb(204,204,204) 1px solid; MARGIN: 0pt 0pt 0pt 0.8ex; PADDING-LEFT: 1ex&quot; class=&quot;gmail_quote&quot;&gt;
&lt;div&gt;Ken was referring to the KeyTyped event, not the ValueChanged event. The latter won&amp;#39;t trigger since typing enter does not change the text field&amp;#39;s contents.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Hope this helps,&lt;/div&gt;
&lt;div&gt;Ingo&lt;font color=&quot;#888888&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;
&lt;div&gt;&lt;br&gt;Ingo, &lt;br&gt;&lt;br&gt;thanks. &lt;br&gt;&lt;br&gt;Hmm... I still don&amp;#39;t see any KeyTyped events generated by the TextField.&lt;br&gt;I must be doing something really stupid, but I just get those ValueChanged events.&lt;br&gt;&lt;br&gt;When I run the code below (Scala 2.8), and input characters into the TextField, all that&amp;#39;s printed are ValueChanged events. &lt;br&gt;
&lt;br&gt;What am I doing wrong, and how do I catch those KeyTyped events? (I&amp;#39;m beginning to fear that I&amp;#39;m missing some fundamental clue here...)&lt;br&gt;&lt;br&gt;/nikolaj&lt;br&gt;&lt;br&gt;&lt;br&gt;//------------------------------------------------------------------ 
&lt;div class=&quot;im&quot;&gt;&lt;br&gt;import swing._&lt;br&gt;import event._&lt;br&gt;&lt;br&gt;object tst extends MainFrame {&lt;br&gt;&lt;br&gt;&lt;/div&gt;  val textField = new TextField(20)&lt;br&gt;  contents = textField&lt;br&gt;  listenTo(textField)&lt;br&gt;  reactions += {case e =&amp;gt; &lt;br&gt;
    println(e)&lt;br&gt;    println() 
&lt;div class=&quot;im&quot;&gt;&lt;br&gt;  }&lt;br&gt;&lt;br&gt;  pack&lt;br&gt;  visible = true&lt;br&gt;&lt;br&gt;  def main(args: Array[String]) {}&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;/div&gt;&lt;/div&gt;
&lt;blockquote style=&quot;BORDER-LEFT: rgb(204,204,204) 1px solid; MARGIN: 0pt 0pt 0pt 0.8ex; PADDING-LEFT: 1ex&quot; class=&quot;gmail_quote&quot;&gt;
&lt;div&gt;&lt;font color=&quot;#888888&quot;&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;gmail_quote&quot;&gt;On Sun, Nov 22, 2009 at 9:16 AM, nikolaj lindberg &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26487967&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;nikolaj.lindberg@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote: 
&lt;div class=&quot;im&quot;&gt;&lt;br&gt;
&lt;blockquote style=&quot;BORDER-LEFT: rgb(204,204,204) 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex&quot; class=&quot;gmail_quote&quot;&gt;&lt;br&gt;&lt;br&gt;
&lt;div class=&quot;gmail_quote&quot;&gt;
&lt;div&gt;On Sun, Nov 22, 2009 at 6:00 PM, Ken Bloom &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26487967&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;kbloom@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;/div&gt;
&lt;blockquote style=&quot;BORDER-LEFT: rgb(204,204,204) 1px solid; MARGIN: 0pt 0pt 0pt 0.8ex; PADDING-LEFT: 1ex&quot; class=&quot;gmail_quote&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;On Wed, 18 Nov 2009 18:52:52 +0100, nikolaj lindberg wrote:&lt;br&gt;&lt;br&gt;&lt;/div&gt;[...] &lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;div&gt;
&lt;blockquote style=&quot;BORDER-LEFT: rgb(204,204,204) 1px solid; MARGIN: 0pt 0pt 0pt 0.8ex; PADDING-LEFT: 1ex&quot; class=&quot;gmail_quote&quot;&gt;
&lt;div&gt;
&lt;div&gt;&amp;gt; How do I know what EditDone events are generated by typing &amp;lt;enter&amp;gt; and&lt;br&gt;&amp;gt; not by the TextField component losing focus? Any hints are welcome!&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;You probably want a KeyTyped event to look specifically for the Enter key.&lt;br&gt;
&lt;font color=&quot;#888888&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/blockquote&gt;&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;br&gt;Hi Ken,&lt;br&gt;&lt;br&gt;yes, I would love one of those, but the Enter key seems to only generate the EditDone event (and not a ValueChanged event, like when entering an &amp;quot;ordinary&amp;quot; character).&lt;br&gt;&lt;br&gt;/nikolaj&lt;br&gt;
&lt;br&gt; &lt;/div&gt;
&lt;blockquote style=&quot;BORDER-LEFT: rgb(204,204,204) 1px solid; MARGIN: 0pt 0pt 0pt 0.8ex; PADDING-LEFT: 1ex&quot; class=&quot;gmail_quote&quot;&gt;&lt;font color=&quot;#888888&quot;&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;div&gt;&lt;br&gt;Chanoch (Ken) Bloom. PhD candidate. Linguistic Cognition Laboratory.&lt;br&gt;Department of Computer Science. Illinois Institute of Technology.&lt;br&gt;&lt;a href=&quot;http://www.iit.edu/~kbloom1/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://www.iit.edu/~kbloom1/&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;/div&gt;&lt;/font&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/swing.TextField-generates-EditDone-event-when-losing-focus-tp26412544p26487967.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26487823</id>
	<title>Re: Re: Nesting alternative parser combinators</title>
	<published>2009-11-23T15:09:51Z</published>
	<updated>2009-11-23T15:09:51Z</updated>
	<author>
		<name>Tony Sloane</name>
	</author>
	<content type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body style=&quot;word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; &quot;&gt;Hi Pavol,&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I'm glad you found my mail useful.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;- the \z took me a moment to figure out, it turns out to be the Java&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;regex syntax&amp;nbsp;for end of file&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;- I agree that the error reporting behaviour of phrase is unclear,&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;at least it should be described in the ScalaDoc. &amp;nbsp;The choice of&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;reporting the last no success is somewhat arbitrary but arguably&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;more useful than just saying 'end of input expected'. &amp;nbsp;Perhaps a&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;better situation would be to do both.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;cheers,&lt;/div&gt;&lt;div&gt;Tony&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;On 23/11/2009, at 5:49 PM, Pavol Vaskovic wrote:&lt;/div&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt;&lt;blockquote type=&quot;cite&quot;&gt;Thank you very much for explanation. Now I understand.&lt;br&gt;&lt;br&gt;I have encountered the same problem before, but did not realize, it is the same problem. By same problem, I mean the parser itself succeeds, but the parseAll fails due to remaining unparsed input. The error message was then &quot;`\z' expected but ...&quot; which pointed me to look up in the combination tree, because I had no `\z' in my part of the grammar. &lt;br&gt;
&lt;br&gt;Now it did not occur to me, that 'Y' was succeeding, I was expecting the `\z' message for that case. I guess this is another instance of [scala-user] Confusing parsing combinator errors.&lt;br&gt;&lt;br&gt;The way how parseAll chooses the error to report does not make sense to me. I see no correlation between the reported failure of an unsuccessful parser that &lt;br&gt;
consumed most of the input before failing and the real error in this case - expected end of input (`\z'), but `-' found. In effect, it is choosing arbitrary previous error message, that hides the true nature of the problem - the topmost user-defined parser _succeeded_, but there was input still left.&lt;br&gt;
&lt;br&gt;Regards&lt;br&gt;Pavol Vaskovic&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Mon, Nov 23, 2009 at 5:16 AM, Tony Sloane &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26487823&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;inkytonik@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
&lt;div style=&quot;word-wrap: break-word;&quot;&gt;Hi Pavol,&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;BNF semantics is not quite right for this kind of parser. &amp;nbsp;Significant&lt;/div&gt;&lt;div&gt;differences&amp;nbsp;are that alternative order and&amp;nbsp;backtracking behaviour&lt;/div&gt;&lt;div&gt;
matter for the&amp;nbsp;alternation combinator but are not really defined for&lt;/div&gt;&lt;div&gt;BNF.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;It appears to me that your pY parser works because phrase(X) cannot&lt;/div&gt;&lt;div&gt;succeed&amp;nbsp;(since it doesn't consume all of the input). &amp;nbsp;Hence the second&lt;/div&gt;
&lt;div&gt;alternative of pY is chosen and succeeds.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;For the Y variant, X actually succeeds since a prefix of the input is&lt;/div&gt;&lt;div&gt;&quot;K&quot;,&amp;nbsp;which is a KD, which is an X. &amp;nbsp;Hence Y succeeds. &amp;nbsp;But the next&amp;nbsp;&lt;/div&gt;
&lt;div&gt;level up (parseAll (Y, ...)) doesn't&amp;nbsp;succeed, since some of the input&amp;nbsp;&lt;/div&gt;&lt;div&gt;has not been consumed.&amp;nbsp;&amp;nbsp;It is too late&amp;nbsp;to backtrack into the second&lt;/div&gt;&lt;div&gt;alternative of Y at that&amp;nbsp;point though, since Y has already succeeded.&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I think the error you are seeing:&lt;/div&gt;&lt;div class=&quot;im&quot;&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote type=&quot;cite&quot;&gt;[1.3] failure: `D' expected but `O' found&lt;br&gt;&lt;br&gt;K-O#1&lt;br&gt;&amp;nbsp; ^&lt;br&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;is reported because the phrase combinator (used by parseAll) reports&lt;/div&gt;&lt;div&gt;the last unsuccessful parse (see lastNoSuccess var in Parsers class),&lt;/div&gt;&lt;div&gt;where &quot;last&quot; refers to latest in the input. &amp;nbsp;This makes sense because&lt;/div&gt;
&lt;div&gt;that error is the likely cause of the parser not&amp;nbsp;consuming&amp;nbsp;the&amp;nbsp;entire&lt;/div&gt;&lt;div&gt;input. &amp;nbsp;In your case, the most recent unsuccessful parse is&amp;nbsp;the&lt;/div&gt;&lt;div&gt;failure in the K ~ (&quot;-&quot; ~&amp;gt; D) alternative of KD on the D, hence the&lt;/div&gt;
&lt;div&gt;error. (There is also a&amp;nbsp;failure in the&amp;nbsp;KD ~ (&quot;#&quot; ~&amp;gt; num) alternative&lt;/div&gt;&lt;div&gt;of X&amp;nbsp;that happens later in time&amp;nbsp;but at an earlier position in the&lt;/div&gt;&lt;div&gt;input&amp;nbsp;(on the &quot;-&quot;, expecting a &quot;#&quot;), so it is not preferred.)&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Whew! &amp;nbsp;This stuff can be tricky to reason about, but&amp;nbsp;I hope this helps&lt;/div&gt;&lt;div&gt;clarify what is going on.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;cheers,&lt;/div&gt;&lt;div&gt;Tony&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;h5&quot;&gt;&lt;div&gt;&lt;br&gt;
&lt;div&gt;&lt;div&gt;On 23/11/2009, at 11:54 AM, Pavol Vaskovic wrote:&lt;/div&gt;&lt;br&gt;&lt;blockquote type=&quot;cite&quot;&gt;I've removed the partial function applications from the test case, because they were not affecting the results. This is even simpler demonstration of behavior I can not explain:&lt;br&gt;
&lt;br&gt;object Test extends util.parsing.combinator.RegexParsers {&lt;br&gt;
&amp;nbsp; override val whiteSpace = &quot;&quot;.r&lt;br&gt;&lt;br&gt;&amp;nbsp; def letter = &quot;[A-Z]&quot;.r&lt;br&gt;&amp;nbsp; def lettersAndDash = &quot;[-A-Z]+&quot;.r&lt;br&gt;&amp;nbsp; def num = &quot;[1-9]&quot;.r&lt;br&gt;&lt;br&gt;&amp;nbsp; def pY = phrase(X) | lettersAndDash ~ (&quot;#&quot; ~&amp;gt; num)&lt;br&gt;

&amp;nbsp; def Y = X | lettersAndDash ~ (&quot;#&quot; ~&amp;gt; num)&lt;br&gt;&lt;br&gt;&amp;nbsp; def X = KD ~ (&quot;#&quot; ~&amp;gt; num) | KD&lt;br&gt;&lt;br&gt;&amp;nbsp; def KD = K ~ (&quot;-&quot; ~&amp;gt; D) | K&lt;br&gt;&lt;br&gt;&amp;nbsp; def K = &quot;K&quot;&lt;br&gt;&amp;nbsp; def D = &quot;D&quot;&lt;br&gt;

&lt;br&gt;&amp;nbsp; def main(args: Array[String]) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; println(parseAll(Y, &quot;K-O#1&quot;))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; println(parseAll(pY, &quot;K-O#1&quot;))&lt;br&gt;&amp;nbsp; }&lt;br&gt;}&lt;br&gt;&lt;br&gt;Why am I getting the following?&lt;br&gt;[1.3] failure: `D' expected but `O' found&lt;br&gt;

&lt;br&gt;K-O#1&lt;br&gt;&amp;nbsp; ^&lt;br&gt;[1.6] parsed: (K-O~1)&lt;br&gt;&lt;br&gt;Nesting alternatives third time, triggers the failure. &lt;br&gt;(Commenting out &quot;| KD&quot; in def X or &quot;| K&quot; in def KD causes the Y to parse with &quot; | lettersAndDash ~ (&quot;#&quot; ~&amp;gt; num)&quot;.) Why exactly does wrapping the X in phrase make this case work?&lt;br&gt;

&lt;br&gt;This seems like a dangerous pitfall, when using parser combinators naively (assuming EBNF semantics), as I do. &lt;br&gt;Why does it behave like this? Why doesn't &quot;b ~ c | b&quot; behave same as &quot;b ~ opt(c)&quot;?&lt;br&gt;

Thanks in advance for bringing some light on this issue.&lt;br&gt;&lt;br&gt;Regards&lt;br&gt;Pavol Vaskovic&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Thu, Nov 19, 2009 at 2:05 PM, Pavol Vaskovic &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26487823&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;pali@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;

&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;I'm parsing addresses in semi-structured format. I've created a grammar that behaves strange, and I am unable to explain what is going on.&lt;br&gt;


&lt;br&gt;
I have been avoiding the use of opt method for wrapping optional parts of grammar, because it complicated the return signatures too much. Instead I was using alternative composition with longer variant first.&lt;br&gt;
&lt;br&gt;
Instead of:&lt;br&gt;
def a = b ~ opt(c)&lt;br&gt;
&lt;br&gt;
I'm using:&lt;br&gt;
def a = b ~ c | b&lt;br&gt;
&lt;br&gt;
When I nest such rules, they start to behave surprisingly - seems like the alternatives are never tried.&lt;br&gt;&lt;/blockquote&gt;&lt;/div&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Nesting-alternative-parser-combinators-tp26425909p26487823.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26485332</id>
	<title>Re: Re: swing.TextField generates EditDone event when  losing focus</title>
	<published>2009-11-23T12:33:42Z</published>
	<updated>2009-11-23T12:33:42Z</updated>
	<author>
		<name>Nikolaj Lindberg</name>
	</author>
	<content type="html">&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Mon, Nov 23, 2009 at 7:40 PM, Ingo Maier &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26485332&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ingoem@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
&lt;div&gt;Ken was referring to the KeyTyped event, not the ValueChanged event. The latter won&amp;#39;t trigger since typing enter does not change the text field&amp;#39;s contents.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Hope this helps,&lt;/div&gt;
&lt;div&gt;Ingo&lt;font color=&quot;#888888&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;Ingo, &lt;br&gt;&lt;br&gt;thanks. &lt;br&gt;&lt;br&gt;Hmm... I still don&amp;#39;t see any KeyTyped events generated by the TextField.&lt;br&gt;I must be doing something really stupid, but I just get those ValueChanged events.&lt;br&gt;
&lt;br&gt;When I run the code below (Scala 2.8), and input characters into the TextField, all that&amp;#39;s printed are ValueChanged events. &lt;br&gt;&lt;br&gt;What am I doing wrong, and how do I catch those KeyTyped events? (I&amp;#39;m beginning to fear that I&amp;#39;m missing some fundamental clue here...)&lt;br&gt;
&lt;br&gt;/nikolaj&lt;br&gt;&lt;br&gt;&lt;br&gt;//------------------------------------------------------------------&lt;br&gt;import swing._&lt;br&gt;import event._&lt;br&gt;&lt;br&gt;object tst extends MainFrame {&lt;br&gt;&lt;br&gt;  val textField = new TextField(20)&lt;br&gt;  contents = textField&lt;br&gt;
  listenTo(textField)&lt;br&gt;  reactions += {case e =&amp;gt; &lt;br&gt;    println(e)&lt;br&gt;    println()&lt;br&gt;  }&lt;br&gt;&lt;br&gt;  pack&lt;br&gt;  visible = true&lt;br&gt;&lt;br&gt;  def main(args: Array[String]) {}&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;/div&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
&lt;div&gt;&lt;font color=&quot;#888888&quot;&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;h5&quot;&gt;
&lt;div class=&quot;gmail_quote&quot;&gt;On Sun, Nov 22, 2009 at 9:16 AM, nikolaj lindberg &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26485332&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;nikolaj.lindberg@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;
&lt;blockquote style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0px 0px 0px 0.8ex; padding-left: 1ex;&quot; class=&quot;gmail_quote&quot;&gt;&lt;br&gt;&lt;br&gt;
&lt;div class=&quot;gmail_quote&quot;&gt;
&lt;div&gt;On Sun, Nov 22, 2009 at 6:00 PM, Ken Bloom &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26485332&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;kbloom@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;/div&gt;
&lt;blockquote style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot; class=&quot;gmail_quote&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;On Wed, 18 Nov 2009 18:52:52 +0100, nikolaj lindberg wrote:&lt;br&gt;&lt;br&gt;&lt;/div&gt;[...] &lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;div&gt;
&lt;blockquote style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot; class=&quot;gmail_quote&quot;&gt;
&lt;div&gt;
&lt;div&gt;&amp;gt; How do I know what EditDone events are generated by typing &amp;lt;enter&amp;gt; and&lt;br&gt;&amp;gt; not by the TextField component losing focus? Any hints are welcome!&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;You probably want a KeyTyped event to look specifically for the Enter key.&lt;br&gt;

&lt;font color=&quot;#888888&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/blockquote&gt;&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;br&gt;Hi Ken,&lt;br&gt;&lt;br&gt;yes, I would love one of those, but the Enter key seems to only generate the EditDone event (and not a ValueChanged event, like when entering an &amp;quot;ordinary&amp;quot; character).&lt;br&gt;&lt;br&gt;/nikolaj&lt;br&gt;

&lt;br&gt; &lt;/div&gt;
&lt;blockquote style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot; class=&quot;gmail_quote&quot;&gt;&lt;font color=&quot;#888888&quot;&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;div&gt;&lt;br&gt;Chanoch (Ken) Bloom. PhD candidate. Linguistic Cognition Laboratory.&lt;br&gt;Department of Computer Science. Illinois Institute of Technology.&lt;br&gt;&lt;a href=&quot;http://www.iit.edu/%7Ekbloom1/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://www.iit.edu/~kbloom1/&lt;/a&gt;&lt;br&gt;

&lt;br&gt;&lt;/div&gt;&lt;/font&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/swing.TextField-generates-EditDone-event-when-losing-focus-tp26412544p26485332.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26484940</id>
	<title>Re: Re: Java Parser in Scala avalable ?</title>
	<published>2009-11-23T12:06:09Z</published>
	<updated>2009-11-23T12:06:09Z</updated>
	<author>
		<name>Manohar Jonnalagedda</name>
	</author>
	<content type="html">Thanks everyone for all the feedback.&lt;br&gt;&lt;br&gt;I will certainly have a look at the eclipse links that you have provided. Meanwhile, I also found this interesting thread that calls visitors to the AST : &lt;a href=&quot;http://dev.eclipse.org/mhonarc/newsLists/news.eclipse.tools.jdt/msg24263.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://dev.eclipse.org/mhonarc/newsLists/news.eclipse.tools.jdt/msg24263.html&lt;/a&gt;&lt;br&gt;
&lt;br&gt;Cheers,&lt;br&gt;Manohar&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Mon, Nov 23, 2009 at 3:16 AM, Peter C. Chapin &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26484940&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;pcc482719@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
Manohar Jonnalagedda&lt;br&gt;
&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26484940&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;manojo10386@...&lt;/a&gt;&amp;gt; wrote in&lt;br&gt;
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26484940&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;news%3Ad17eedc90911221707n4be9c9d0q4e63245c67eb2b92@...&lt;/a&gt;:&lt;br&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;h5&quot;&gt;&lt;br&gt;
&amp;gt; I am working in a project where I would be needing to analyse Java&lt;br&gt;
&amp;gt; code, and have therefore started to work on a parser for Java. The&lt;br&gt;
&amp;gt; size of the grammar being immense however, before going deeper, I was&lt;br&gt;
&amp;gt; wondering if anyone had attempted a similar (futile ?) feat, and if&lt;br&gt;
&amp;gt; there was some code available in the public domain I could find ?&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;/div&gt;Since Scala can easily call Java code, you might also find what you need in&lt;br&gt;
Java somewhere. I&amp;#39;m working on a project where I needed a parser for the&lt;br&gt;
nesC programming language. I used ANTLR to create the parser in Java and&lt;br&gt;
then used the result from my Scala program.&lt;br&gt;
&lt;font color=&quot;#888888&quot;&gt;&lt;br&gt;
Peter&lt;br&gt;
&lt;br&gt;
&lt;/font&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Java-Parser-in-Scala-avalable---tp26471406p26484940.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26483940</id>
	<title>Re: _|_ vs null (Was Re: Cost of Option / Some vs null)</title>
	<published>2009-11-23T10:59:31Z</published>
	<updated>2009-11-23T10:59:31Z</updated>
	<author>
		<name>Rex Kerr-2</name>
	</author>
	<content type="html">Babylonians didn&amp;#39;t fully develop division (i.e. they didn&amp;#39;t fully work out the idea of multiplicative inverse and come up with methods for representing such things to arbitrary precision).  So for them (1/7) was a problem.  They did create tables of exact multiplicative inverses, though, along with approximations for the ones that didn&amp;#39;t have exact inverses (and they recognized that those were just approximations).&lt;br&gt;
&lt;br&gt;These days, to split a meter into thirds, it&amp;#39;s (1/3) meters--just leave it as a rational number!  Convert (1/3) or whatever you end up with into decimal to the desired number of significant figures as the last step.  Not so hard!&lt;br&gt;
&lt;br&gt;Of course, it would be easier still to divide by 3 if we used base 6 or 12 for counting.  (60 is too much of a hassle, since your addition table has ~900 entries in it, which is hard to memorize.)&lt;br&gt;&lt;br&gt;  --Rex&lt;br&gt;&lt;br&gt;
&lt;div class=&quot;gmail_quote&quot;&gt;On Mon, Nov 23, 2009 at 1:40 PM, Kevin Wright &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26483940&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;kev.lee.wright@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
Yeah, base 60 is fun, divisible by so many other useful integers. Same&lt;br&gt;
logic applies to base 12; try and easily split a meter into thirds,&lt;br&gt;
then do the same with a foot.&lt;br&gt;
&lt;div class=&quot;im&quot;&gt;&lt;br&gt;
On Monday, November 23, 2009, Ishaaq Chandy &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26483940&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ishaaq@...&lt;/a&gt;&amp;gt; wrote:&lt;br&gt;
&lt;br&gt;
&amp;gt; In fact, in all this, the people that really shine out were the Babylonians - the mathematical discoveries they made 4000 years ago were unmatched for their time! The stuff they discovered still affects us today - ever wondered why there are 60 seconds to the minute? 360 degrees to form a circle?&lt;br&gt;

&amp;gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Cost-of-Option---Some-vs-null-tp26438395p26483940.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26483687</id>
	<title>Re: _|_ vs null (Was Re: Cost of Option / Some vs null)</title>
	<published>2009-11-23T10:40:42Z</published>
	<updated>2009-11-23T10:40:42Z</updated>
	<author>
		<name>Kevin Wright-4</name>
	</author>
	<content type="html">Yeah, base 60 is fun, divisible by so many other useful integers. Same
&lt;br&gt;logic applies to base 12; try and easily split a meter into thirds,
&lt;br&gt;then do the same with a foot.
&lt;br&gt;&lt;br&gt;On Monday, November 23, 2009, Ishaaq Chandy &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26483687&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ishaaq@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Amen brother! No argument there. That is what I implied when I previously pointed out that the Arabs have a myriad achievements to their credit. And yes, as you point out, so do the Greeks, the Chinese, the Europeans etc. I was merely pointing out a factual error that was made about the history of zero, nothing more, nothing less.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; In fact, in all this, the people that really shine out were the Babylonians - the mathematical discoveries they made 4000 years ago were unmatched for their time! The stuff they discovered still affects us today - ever wondered why there are 60 seconds to the minute? 360 degrees to form a circle?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Cheers,
&lt;br&gt;&amp;gt; Ishaaq
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 2009/11/23 Kevin Wright &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26483687&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;kev.lee.wright@...&lt;/a&gt; &amp;lt;javascript:_e({}, 'cvml', '&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26483687&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;kev.lee.wright@...&lt;/a&gt;');&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; But at the other end of the spectrum; I think that Europeans+Russians fairly got infinity, the proper formalised aleph-zero stuff, not just ∞ (Cantor was German, but born in Russia)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Or if you just want to get very-very-very close to zero then we have Newton and Leibniz to thank for infinitesimals and differential calculus
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Recent research has shown that traditional African villages have been built around a fractal structure for, well, a very long time.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; There's a lot to be said for the famous &amp;quot;standing on the shoulders of giants&amp;quot; quote.  Mathematics is truly global and is built from the work of a great many people scattered across the globe.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Mon, Nov 23, 2009 at 11:02 AM, Ishaaq Chandy &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26483687&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ishaaq@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Ok, at the risk of irritating every one else on this mailing list - I'll take the bait and continue this off-topic conversation with one last post.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Please back your claims with references. You statements may be true, but they need to be backed with documentation to be believable.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Zero has had a long and convoluted history pre-dating the Indians, but the first *documented* instance of using the decimal system (which is based on the concept of using zeroes to denote place-holders to denote magnitude) as well as treating zero as a number in its own right is of Indian origin: &lt;a href=&quot;http://en.wikipedia.org/wiki/Zero#History&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://en.wikipedia.org/wiki/Zero#History&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; According to that wiki page the Chinese had a non-formalised concept of zero in the first century (not first by a long shot, the Babylonians win there again - 2nd millennium BCE! - followed by a number of other civilizations before the Chinese got to it), and that their first formalised documented instance of using zero as we do now was in 1247 CE. I concede that not everyone may consider wikipedia as a legitimate source, however it is not alone in making this claim, and it is the easiest one I could search and link to in an email like this. If you have documented evidence contradicting this please do share.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Ishaaq
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 2009/11/23 De Gao &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26483687&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gaode.ml@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; add some fun: about 3500 yrs ago
&lt;br&gt;&amp;gt; chinese already had number 1-9. about 2500 yrs ago chinese invent 0. So what YOU
&lt;br&gt;&amp;gt; did was just invent how to write numbers in a simple way
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; De
&lt;br&gt;&amp;gt; Gao
&lt;br&gt;&amp;gt; 2009-11-23
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 发件人： Philip
&lt;br&gt;&amp;gt; Köster
&lt;br&gt;&amp;gt; 发送时间：
&lt;br&gt;&amp;gt; 2009-11-21 23:22:08
&lt;br&gt;&amp;gt; 收件人： Ishaaq
&lt;br&gt;&amp;gt; Chandy
&lt;br&gt;&amp;gt; 抄送： Moez A. Abdel-Gawad;
&lt;br&gt;&amp;gt; Scala User List
&lt;br&gt;&amp;gt; 主题： Re: _|_ vs null (Was
&lt;br&gt;&amp;gt; Re: [scala-user] Cost of Option / Some vs null)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; To possibly take some strength out of this discussion---none of us lived
&lt;br&gt;&amp;gt; 4000 yrs ago, so we really don't know---, I'm always surprised to see
&lt;br&gt;&amp;gt; that even the Chinese and Japanese and Hindu folks adopted ``our&amp;quot;
&lt;br&gt;&amp;gt; numbers. They must have been a good invention. :)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Ishaaq Chandy schrieb:
&lt;br&gt;&amp;gt;&amp;gt; We'll just have to agree to disagree - even though the vast majority of
&lt;br&gt;&amp;gt;&amp;gt; literature on the topic (including the Encyclopaedia Britannica - which
&lt;br&gt;&amp;gt;&amp;gt; you were so quick to quote) agree with what I said: i.e. the decimal
&lt;br&gt;&amp;gt;&amp;gt; number system, with zero as a place-holder denoting magnitude was an
&lt;br&gt;&amp;gt;&amp;gt; Indian inve
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Cost-of-Option---Some-vs-null-tp26438395p26483687.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26483662</id>
	<title>Re: Re: swing.TextField generates EditDone event when  losing focus</title>
	<published>2009-11-23T10:40:13Z</published>
	<updated>2009-11-23T10:40:13Z</updated>
	<author>
		<name>Ingo Maier-2</name>
	</author>
	<content type="html">&lt;div&gt;Ken was referring to the KeyTyped event, not the ValueChanged event. The latter won&amp;#39;t trigger since typing enter does not change the text field&amp;#39;s contents.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Hope this helps,&lt;/div&gt;
&lt;div&gt;Ingo&lt;br&gt;&lt;br&gt;&lt;/div&gt;
&lt;div class=&quot;gmail_quote&quot;&gt;On Sun, Nov 22, 2009 at 9:16 AM, nikolaj lindberg &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26483662&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;nikolaj.lindberg@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;
&lt;blockquote style=&quot;BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex&quot; class=&quot;gmail_quote&quot;&gt;&lt;br&gt;&lt;br&gt;
&lt;div class=&quot;gmail_quote&quot;&gt;
&lt;div class=&quot;im&quot;&gt;On Sun, Nov 22, 2009 at 6:00 PM, Ken Bloom &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26483662&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;kbloom@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;/div&gt;
&lt;blockquote style=&quot;BORDER-LEFT: rgb(204,204,204) 1px solid; MARGIN: 0pt 0pt 0pt 0.8ex; PADDING-LEFT: 1ex&quot; class=&quot;gmail_quote&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;im&quot;&gt;On Wed, 18 Nov 2009 18:52:52 +0100, nikolaj lindberg wrote:&lt;br&gt;&lt;br&gt;&lt;/div&gt;[...] &lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;div class=&quot;im&quot;&gt;
&lt;blockquote style=&quot;BORDER-LEFT: rgb(204,204,204) 1px solid; MARGIN: 0pt 0pt 0pt 0.8ex; PADDING-LEFT: 1ex&quot; class=&quot;gmail_quote&quot;&gt;
&lt;div&gt;
&lt;div&gt;&amp;gt; How do I know what EditDone events are generated by typing &amp;lt;enter&amp;gt; and&lt;br&gt;&amp;gt; not by the TextField component losing focus? Any hints are welcome!&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;You probably want a KeyTyped event to look specifically for the Enter key.&lt;br&gt;
&lt;font color=&quot;#888888&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/blockquote&gt;&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;br&gt;Hi Ken,&lt;br&gt;&lt;br&gt;yes, I would love one of those, but the Enter key seems to only generate the EditDone event (and not a ValueChanged event, like when entering an &amp;quot;ordinary&amp;quot; character).&lt;br&gt;&lt;br&gt;/nikolaj&lt;br&gt;
&lt;br&gt; &lt;/div&gt;
&lt;blockquote style=&quot;BORDER-LEFT: rgb(204,204,204) 1px solid; MARGIN: 0pt 0pt 0pt 0.8ex; PADDING-LEFT: 1ex&quot; class=&quot;gmail_quote&quot;&gt;&lt;font color=&quot;#888888&quot;&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;div class=&quot;im&quot;&gt;&lt;br&gt;Chanoch (Ken) Bloom. PhD candidate. Linguistic Cognition Laboratory.&lt;br&gt;Department of Computer Science. Illinois Institute of Technology.&lt;br&gt;&lt;a href=&quot;http://www.iit.edu/~kbloom1/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://www.iit.edu/~kbloom1/&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;/div&gt;&lt;/font&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/swing.TextField-generates-EditDone-event-when-losing-focus-tp26412544p26483662.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26482344</id>
	<title>Re: ObservableMap</title>
	<published>2009-11-23T09:20:30Z</published>
	<updated>2009-11-23T09:20:30Z</updated>
	<author>
		<name>Donna Malayeri</name>
	</author>
	<content type="html">You need to create a class that mixes in ObservableMap and some kind of concrete Map, such as HashMap.&lt;br&gt;&lt;font color=&quot;#888888&quot;&gt;&lt;br&gt;Donna&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Mon, Nov 23, 2009 at 5:53 PM, Daniel Sobral &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26482344&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;dcsobral@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;
&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;How does one go about instantiating an ObservableMap? I have to confess I wasn&amp;#39;t able to get the type inferencer to work for me, nor was I able to figure out the right type incantations.&lt;br clear=&quot;all&quot;&gt;
&lt;font color=&quot;#888888&quot;&gt;&lt;br&gt;-- &lt;br&gt;Daniel C. Sobral&lt;br&gt;

&lt;br&gt;Veni, vidi, veterni.&lt;br&gt;
&lt;/font&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/ObservableMap-tp26481898p26482344.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26482021</id>
	<title>status of Manifest</title>
	<published>2009-11-23T09:00:24Z</published>
	<updated>2009-11-23T09:00:24Z</updated>
	<author>
		<name>daniel mahler</name>
	</author>
	<content type="html">When I had issues with Manifest a while ago I learned the
&lt;br&gt;implementation was not complete at the time.
&lt;br&gt;&lt;br&gt;Will it be complete for 2.8.0? or what is the ETA?
&lt;br&gt;&lt;br&gt;Is there another way to do the following:
&lt;br&gt;&lt;br&gt;&amp;nbsp; def manifestOf[T](implicit m : Manifest[T]) = m
&lt;br&gt;&lt;br&gt;&amp;nbsp; def typeCheck[T](implicit m : Manifest[T]) = (
&lt;br&gt;&amp;nbsp; &amp;nbsp; if (m &amp;lt;:&amp;lt; manifestOf[AnyVal]) &amp;quot;Value&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; else if (m &amp;lt;:&amp;lt; manifestOf[AnyRef]) &amp;quot;Reference&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; else &amp;quot;???&amp;quot;)
&lt;br&gt;&lt;br&gt;Yesterdays nighly still gives:
&lt;br&gt;&lt;br&gt;scala&amp;gt; typeCheck[Int]
&lt;br&gt;res8: java.lang.String = ???
&lt;br&gt;&lt;br&gt;scala&amp;gt; typeCheck[java.lang.Integer]
&lt;br&gt;res5: java.lang.String = Value
&lt;br&gt;&lt;br&gt;scala&amp;gt; typeCheck[java.util.List[java.lang.Integer]]
&lt;br&gt;res6: java.lang.String = ???
&lt;br&gt;&lt;br&gt;Or am I doing something wrong?
&lt;br&gt;&lt;br&gt;thanks
&lt;br&gt;Daniel
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/status-of-Manifest-tp26482021p26482021.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26481898</id>
	<title>ObservableMap</title>
	<published>2009-11-23T08:53:19Z</published>
	<updated>2009-11-23T08:53:19Z</updated>
	<author>
		<name>Daniel Sobral</name>
	</author>
	<content type="html">How does one go about instantiating an ObservableMap? I have to confess I wasn&amp;#39;t able to get the type inferencer to work for me, nor was I able to figure out the right type incantations.&lt;br clear=&quot;all&quot;&gt;&lt;br&gt;-- &lt;br&gt;Daniel C. Sobral&lt;br&gt;

&lt;br&gt;Veni, vidi, veterni.&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/ObservableMap-tp26481898p26481898.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26479546</id>
	<title>RE: about actor</title>
	<published>2009-11-23T06:58:21Z</published>
	<updated>2009-11-23T06:58:21Z</updated>
	<author>
		<name>christopher marshall-2</name>
	</author>
	<content type="html">&lt;html&gt;
&lt;head&gt;

&lt;/head&gt;
&lt;body class='hmmessage'&gt;
A single actor processes the items on its mailbox one-at-a-time in the order the items were added to the mailbox *by the relevant partial-function* being used for a given call to receive or react&lt;br&gt;&lt;br&gt;&lt;hr id=&quot;stopSpelling&quot;&gt;From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26479546&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Caesar.Jr@...&lt;/a&gt;&lt;br&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26479546&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;scala-user@...&lt;/a&gt;&lt;br&gt;Subject: [scala-user] about actor&lt;br&gt;Date: Mon, 23 Nov 2009 21:15:15 +0800&lt;br&gt;&lt;br&gt;






&lt;div&gt;&lt;font face=&quot;Calibri&quot;&gt;does the actor process the next message exactly after 
the first message,&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Calibri&quot;&gt;&amp;nbsp;or they can be processed at the same 
time?&lt;/font&gt;&lt;/div&gt; 		 	   		  &lt;br /&gt;&lt;hr /&gt;New! Receive and respond to mail from other email accounts from within Hotmail &lt;a href='http://clk.atdmt.com/UKM/go/186394593/direct/01/ ' target='_new' rel=&quot;nofollow&quot;&gt;Find out how.&lt;/a&gt;&lt;/body&gt;
&lt;/html&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/about-actor-tp26477888p26479546.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26478976</id>
	<title>about actor</title>
	<published>2009-11-23T06:22:32Z</published>
	<updated>2009-11-23T06:22:32Z</updated>
	<author>
		<name>Caesar You-2</name>
	</author>
	<content type="html">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;HEAD&gt;
&lt;META content=text/html;charset=gb2312 http-equiv=Content-Type&gt;
&lt;META name=GENERATOR content=&quot;MSHTML 8.00.7600.16444&quot;&gt;&lt;/HEAD&gt;
&lt;BODY style=&quot;PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 15px&quot; id=MailContainerBody leftMargin=0 topMargin=0 CanvasTabStop=&quot;true&quot; name=&quot;Compose message area&quot;&gt;
&lt;DIV&gt;&lt;FONT face=Calibri&gt;does the actor process the next message exactly after 
the first message,&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;or they can be processed at the same 
time?&lt;/FONT&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/about-actor-tp26478976p26478976.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26478127</id>
	<title>Re: Cost of Option / Some vs null</title>
	<published>2009-11-23T05:34:27Z</published>
	<updated>2009-11-23T05:34:27Z</updated>
	<author>
		<name>Florian Hars-4</name>
	</author>
	<content type="html">Erik Engbrecht schrieb:
&lt;br&gt;&amp;gt; Using option, the same person might write:
&lt;br&gt;&amp;gt; &amp;nbsp; val x = 5 + foo.get().integerValue // may throw NoSuchElementException
&lt;br&gt;&amp;gt; because foo may be None
&lt;br&gt;&lt;br&gt;And some would argue that you should really write something like
&lt;br&gt;this to avoid all the case matches and if/else constructs:
&lt;br&gt;&lt;br&gt;scala&amp;gt; def addFive(foo: Option[Int]) = foo map (_ + 5)
&lt;br&gt;addFive: (Option[Int])Option[Int]
&lt;br&gt;&lt;br&gt;scala&amp;gt; addFive(None)
&lt;br&gt;res0: Option[Int] = None
&lt;br&gt;&lt;br&gt;scala&amp;gt; addFive(Some(4))
&lt;br&gt;res1: Option[Int] = Some(9)
&lt;br&gt;&lt;br&gt;This works equally well for Tony's Optionn:
&lt;br&gt;&lt;br&gt;scala&amp;gt; def addFiveN(foo: Optionn[Int]) = foo map (_ + 5)
&lt;br&gt;addFiveN: (Optionn[Int])java.lang.Object with Optionn[Int]
&lt;br&gt;&lt;br&gt;scala&amp;gt; object NoneN extends Optionn[Nothing] { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;def cata[X](ding: Nothing =&amp;gt; X, dong: =&amp;gt; X) = dong
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp;}
&lt;br&gt;defined module NoneN
&lt;br&gt;&lt;br&gt;scala&amp;gt; class SomeN[T](x: T) extends Optionn[T] { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; def cata[X](ding: T =&amp;gt; X, dong: =&amp;gt; X) = ding(x) &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;| }
&lt;br&gt;defined class SomeN
&lt;br&gt;&lt;br&gt;scala&amp;gt; addFiveN(NoneN) cata (x =&amp;gt; &amp;quot;SomeN(&amp;quot; + x.toString + &amp;quot;)&amp;quot;, &amp;quot;NoneN&amp;quot;)
&lt;br&gt;res16: java.lang.String = NoneN
&lt;br&gt;&lt;br&gt;scala&amp;gt; addFiveN(new SomeN(4)) cata (x =&amp;gt; &amp;quot;SomeN(&amp;quot; + x.toString + &amp;quot;)&amp;quot;, &amp;quot;NoneN&amp;quot;)
&lt;br&gt;res17: java.lang.String = SomeN(9)
&lt;br&gt;&lt;br&gt;- Florian
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Cost-of-Option---Some-vs-null-tp26438395p26478127.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26477888</id>
	<title>about actor</title>
	<published>2009-11-23T05:15:15Z</published>
	<updated>2009-11-23T05:15:15Z</updated>
	<author>
		<name>Caesar You-2</name>
	</author>
	<content type="html">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;HEAD&gt;
&lt;META content=text/html;charset=gb2312 http-equiv=Content-Type&gt;
&lt;META name=GENERATOR content=&quot;MSHTML 8.00.7600.16385&quot;&gt;&lt;/HEAD&gt;
&lt;BODY style=&quot;PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 15px&quot; id=MailContainerBody leftMargin=0 topMargin=0 CanvasTabStop=&quot;true&quot; name=&quot;Compose message area&quot;&gt;
&lt;DIV&gt;&lt;FONT face=Calibri&gt;does the actor process the next message exactly after 
the first message,&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;or they can be processed at the same 
time?&lt;/FONT&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/about-actor-tp26477888p26477888.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26477821</id>
	<title>Re: Re: Nesting alternative parser combinators</title>
	<published>2009-11-23T05:13:05Z</published>
	<updated>2009-11-23T05:13:05Z</updated>
	<author>
		<name>Daniel Sobral</name>
	</author>
	<content type="html">Let me thank you too, Tony. In particular, I never really understood &amp;quot;phrase&amp;quot; until now.&lt;br&gt;&lt;br&gt;
&lt;div class=&quot;gmail_quote&quot;&gt;On Mon, Nov 23, 2009 at 4:49 AM, Pavol Vaskovic &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26477821&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;pali@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;
&lt;blockquote style=&quot;BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex&quot; class=&quot;gmail_quote&quot;&gt;Hi Tony,&lt;br&gt;&lt;br&gt;Thank you very much for explanation. Now I understand.&lt;br&gt;&lt;br&gt;I have encountered the same problem before, but did not realize, it is the same problem. By same problem, I mean the parser itself succeeds, but the parseAll fails due to remaining unparsed input. The error message was then &amp;quot;`\z&amp;#39; expected but ...&amp;quot; which pointed me to look up in the combination tree, because I had no `\z&amp;#39; in my part of the grammar. &lt;br&gt;

&lt;br&gt;Now it did not occur to me, that &amp;#39;Y&amp;#39; was succeeding, I was expecting the `\z&amp;#39; message for that case. I guess this is another instance of [scala-user] Confusing parsing combinator errors.&lt;br&gt;&lt;br&gt;The way how parseAll chooses the error to report does not make sense to me. I see no correlation between the reported failure of an unsuccessful parser that &lt;br&gt;

consumed most of the input before failing and the real error in this case - expected end of input (`\z&amp;#39;), but `-&amp;#39; found. In effect, it is choosing arbitrary previous error message, that hides the true nature of the problem - the topmost user-defined parser _succeeded_, but there was input still left.&lt;br&gt;

&lt;br&gt;Regards&lt;br&gt;&lt;font color=&quot;#888888&quot;&gt;Pavol Vaskovic&lt;/font&gt; 
&lt;div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div class=&quot;h5&quot;&gt;&lt;br&gt;&lt;br&gt;
&lt;div class=&quot;gmail_quote&quot;&gt;On Mon, Nov 23, 2009 at 5:16 AM, Tony Sloane &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26477821&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;inkytonik@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;
&lt;blockquote style=&quot;BORDER-LEFT: rgb(204,204,204) 1px solid; MARGIN: 0pt 0pt 0pt 0.8ex; PADDING-LEFT: 1ex&quot; class=&quot;gmail_quote&quot;&gt;
&lt;div style=&quot;WORD-WRAP: break-word&quot;&gt;Hi Pavol, 
&lt;div&gt;&lt;br&gt;&lt;/div&gt;
&lt;div&gt;BNF semantics is not quite right for this kind of parser.  Significant&lt;/div&gt;
&lt;div&gt;differences are that alternative order and backtracking behaviour&lt;/div&gt;
&lt;div&gt;matter for the alternation combinator but are not really defined for&lt;/div&gt;
&lt;div&gt;BNF.&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;
&lt;div&gt;It appears to me that your pY parser works because phrase(X) cannot&lt;/div&gt;
&lt;div&gt;succeed (since it doesn&amp;#39;t consume all of the input).  Hence the second&lt;/div&gt;
&lt;div&gt;alternative of pY is chosen and succeeds.&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;
&lt;div&gt;For the Y variant, X actually succeeds since a prefix of the input is&lt;/div&gt;
&lt;div&gt;&amp;quot;K&amp;quot;, which is a KD, which is an X.  Hence Y succeeds.  But the next &lt;/div&gt;
&lt;div&gt;level up (parseAll (Y, ...)) doesn&amp;#39;t succeed, since some of the input &lt;/div&gt;
&lt;div&gt;has not been consumed.  It is too late to backtrack into the second&lt;/div&gt;
&lt;div&gt;alternative of Y at that point though, since Y has already succeeded.&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;
&lt;div&gt;I think the error you are seeing:&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;
&lt;div&gt;
&lt;blockquote type=&quot;cite&quot;&gt;[1.3] failure: `D&amp;#39; expected but `O&amp;#39; found&lt;br&gt;&lt;br&gt;K-O#1&lt;br&gt;  ^&lt;br&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;is reported because the phrase combinator (used by parseAll) reports&lt;/div&gt;
&lt;div&gt;the last unsuccessful parse (see lastNoSuccess var in Parsers class),&lt;/div&gt;
&lt;div&gt;where &amp;quot;last&amp;quot; refers to latest in the input.  This makes sense because&lt;/div&gt;
&lt;div&gt;that error is the likely cause of the parser not consuming the entire&lt;/div&gt;
&lt;div&gt;input.  In your case, the most recent unsuccessful parse is the&lt;/div&gt;
&lt;div&gt;failure in the K ~ (&amp;quot;-&amp;quot; ~&amp;gt; D) alternative of KD on the D, hence the&lt;/div&gt;
&lt;div&gt;error. (There is also a failure in the KD ~ (&amp;quot;#&amp;quot; ~&amp;gt; num) alternative&lt;/div&gt;
&lt;div&gt;of X that happens later in time but at an earlier position in the&lt;/div&gt;
&lt;div&gt;input (on the &amp;quot;-&amp;quot;, expecting a &amp;quot;#&amp;quot;), so it is not preferred.)&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;
&lt;div&gt;Whew!  This stuff can be tricky to reason about, but I hope this helps&lt;/div&gt;
&lt;div&gt;clarify what is going on.&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;
&lt;div&gt;cheers,&lt;/div&gt;
&lt;div&gt;Tony&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;br&gt;
&lt;div&gt;
&lt;div&gt;On 23/11/2009, at 11:54 AM, Pavol Vaskovic wrote:&lt;/div&gt;&lt;br&gt;
&lt;blockquote type=&quot;cite&quot;&gt;I&amp;#39;ve removed the partial function applications from the test case, because they were not affecting the results. This is even simpler demonstration of behavior I can not explain:&lt;br&gt;&lt;br&gt;object Test extends util.parsing.combinator.RegexParsers {&lt;br&gt;

  override val whiteSpace = &amp;quot;&amp;quot;.r&lt;br&gt;&lt;br&gt;  def letter = &amp;quot;[A-Z]&amp;quot;.r&lt;br&gt;  def lettersAndDash = &amp;quot;[-A-Z]+&amp;quot;.r&lt;br&gt;  def num = &amp;quot;[1-9]&amp;quot;.r&lt;br&gt;&lt;br&gt;  def pY = phrase(X) | lettersAndDash ~ (&amp;quot;#&amp;quot; ~&amp;gt; num)&lt;br&gt;

  def Y = X | lettersAndDash ~ (&amp;quot;#&amp;quot; ~&amp;gt; num)&lt;br&gt;&lt;br&gt;  def X = KD ~ (&amp;quot;#&amp;quot; ~&amp;gt; num) | KD&lt;br&gt;&lt;br&gt;  def KD = K ~ (&amp;quot;-&amp;quot; ~&amp;gt; D) | K&lt;br&gt;&lt;br&gt;  def K = &amp;quot;K&amp;quot;&lt;br&gt;  def D = &amp;quot;D&amp;quot;&lt;br&gt;

&lt;br&gt;  def main(args: Array[String]) {&lt;br&gt;    println(parseAll(Y, &amp;quot;K-O#1&amp;quot;))&lt;br&gt;    println(parseAll(pY, &amp;quot;K-O#1&amp;quot;))&lt;br&gt;  }&lt;br&gt;}&lt;br&gt;&lt;br&gt;Why am I getting the following?&lt;br&gt;[1.3] failure: `D&amp;#39; expected but `O&amp;#39; found&lt;br&gt;

&lt;br&gt;K-O#1&lt;br&gt;  ^&lt;br&gt;[1.6] parsed: (K-O~1)&lt;br&gt;&lt;br&gt;Nesting alternatives third time, triggers the failure. &lt;br&gt;(Commenting out &amp;quot;| KD&amp;quot; in def X or &amp;quot;| K&amp;quot; in def KD causes the Y to parse with &amp;quot; | lettersAndDash ~ (&amp;quot;#&amp;quot; ~&amp;gt; num)&amp;quot;.) Why exactly does wrapping the X in phrase make this case work?&lt;br&gt;

&lt;br&gt;This seems like a dangerous pitfall, when using parser combinators naively (assuming EBNF semantics), as I do. &lt;br&gt;Why does it behave like this? Why doesn&amp;#39;t &amp;quot;b ~ c | b&amp;quot; behave same as &amp;quot;b ~ opt(c)&amp;quot;?&lt;br&gt;

Thanks in advance for bringing some light on this issue.&lt;br&gt;&lt;br&gt;Regards&lt;br&gt;Pavol Vaskovic&lt;br&gt;&lt;br&gt;
&lt;div class=&quot;gmail_quote&quot;&gt;On Thu, Nov 19, 2009 at 2:05 PM, Pavol Vaskovic &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26477821&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;pali@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;
&lt;blockquote style=&quot;BORDER-LEFT: rgb(204,204,204) 1px solid; MARGIN: 0pt 0pt 0pt 0.8ex; PADDING-LEFT: 1ex&quot; class=&quot;gmail_quote&quot;&gt;I&amp;#39;m parsing addresses in semi-structured format. I&amp;#39;ve created a grammar that behaves strange, and I am unable to explain what is going on.&lt;br&gt;

&lt;br&gt;I have been avoiding the use of opt method for wrapping optional parts of grammar, because it complicated the return signatures too much. Instead I was using alternative composition with longer variant first.&lt;br&gt;&lt;br&gt;
Instead of:&lt;br&gt;
def a = b ~ opt(c)&lt;br&gt;&lt;br&gt;I&amp;#39;m using:&lt;br&gt;def a = b ~ c | b&lt;br&gt;&lt;br&gt;When I nest such rules, they start to behave surprisingly - seems like the alternatives are never tried.&lt;br&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;

&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;br clear=&quot;all&quot;&gt;&lt;br&gt;-- &lt;br&gt;Daniel C. Sobral&lt;br&gt;&lt;br&gt;Veni, vidi, veterni.&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Nesting-alternative-parser-combinators-tp26425909p26477821.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26477745</id>
	<title>Re: Re: _|_ vs null (Was Re: Cost of Option / Some vs  null)</title>
	<published>2009-11-23T05:07:07Z</published>
	<updated>2009-11-23T05:07:07Z</updated>
	<author>
		<name>Ishaaq Chandy</name>
	</author>
	<content type="html">Amen brother! No argument there. That is what I implied when I previously pointed out that the Arabs have a myriad achievements to their credit. And yes, as you point out, so do the Greeks, the Chinese, the Europeans etc. I was merely pointing out a factual error that was made about the history of zero, nothing more, nothing less.&lt;br&gt;

&lt;br&gt;In fact, in all this, the people that really shine out were the Babylonians - the mathematical discoveries they made 4000 years ago were unmatched for their time! The stuff they discovered still affects us today - ever wondered why there are 60 seconds to the minute? 360 degrees to form a circle?&lt;br&gt;

&lt;br&gt;Cheers,&lt;br&gt;Ishaaq&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;2009/11/23 Kevin Wright &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26477745&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;kev.lee.wright@...&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;

But at the other end of the spectrum; I think that Europeans+Russians fairly got infinity, the proper formalised aleph-zero stuff, not just ∞ (Cantor was German, but born in Russia)&lt;br&gt;&lt;br&gt;Or if you just want to get very-very-very close to zero then we have Newton and Leibniz to thank for infinitesimals and differential calculus&lt;br&gt;


&lt;br&gt;Recent research has shown that traditional African villages have been built around a fractal structure for, well, a very long time.&lt;br&gt;&lt;br&gt;&lt;br&gt;There&amp;#39;s a lot to be said for the famous &amp;quot;standing on the shoulders of giants&amp;quot; quote.  Mathematics is truly global and is built from the work of a great many people scattered across the globe.&lt;div&gt;

&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;h5&quot;&gt;&lt;br&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Mon, Nov 23, 2009 at 11:02 AM, Ishaaq Chandy &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26477745&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ishaaq@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;


Ok, at the risk of irritating every one else on this mailing list - I&amp;#39;ll take the bait and continue this off-topic conversation with one last post.&lt;br&gt;&lt;br&gt;Please back your claims with references. You statements may be true, but they need to be backed with documentation to be believable.&lt;br&gt;




&lt;br&gt;Zero has had a long and convoluted history pre-dating the Indians, but the first *documented* instance of using the decimal system (which is based on the concept of using zeroes to denote place-holders to denote magnitude) as well as treating zero as a number in its own right is of Indian origin: &lt;a href=&quot;http://en.wikipedia.org/wiki/Zero#History&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://en.wikipedia.org/wiki/Zero#History&lt;/a&gt;&lt;br&gt;




&lt;br&gt;According to that wiki page the Chinese had a non-formalised concept of zero in the first century (not first by a long shot, the Babylonians win there again - 2nd millennium BCE! - followed by a number of other civilizations before the Chinese got to it), and that their first formalised documented instance of using zero as we do now was in 1247 CE. I concede that not everyone may consider wikipedia as a legitimate source, however it is not alone in making this claim, and it is the easiest one I could search and link to in an email like this. If you have documented evidence contradicting this please do share.&lt;br&gt;




&lt;br&gt;Ishaaq&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;2009/11/23 De Gao &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://gaode.ml&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;gaode.ml&lt;/a&gt;@&lt;a href=&quot;http://gmail.com&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;gmail.com&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;


&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;







&lt;div&gt;
&lt;div&gt;&lt;font color=&quot;#0000ff&quot; face=&quot;Verdana&quot; size=&quot;2&quot;&gt;add some fun: about 3500 yrs ago 
chinese already had number 1-9. about 2500 yrs ago chinese invent 0. So what YOU 
did was just invent how to write numbers in a simple way &lt;img src=&quot;http://old.nabble.com/attachment/26477745/0/14.gif&quot;&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div align=&quot;left&quot;&gt;
&lt;div align=&quot;left&quot;&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;
&lt;hr style=&quot;width: 122px; min-height: 2px;&quot; size=&quot;2&quot;&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color=&quot;#c0c0c0&quot;&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;&lt;span&gt;De 
Gao&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;2009-11-23&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;
&lt;hr&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;b&gt;发件人：&lt;/b&gt; Philip 
Köster&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;b&gt;发送时间：&lt;/b&gt; 
2009-11-21 23:22:08&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;b&gt;收件人：&lt;/b&gt; Ishaaq 
Chandy&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;b&gt;抄送：&lt;/b&gt; Moez A. Abdel-Gawad; 
Scala User List&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;b&gt;主题：&lt;/b&gt; Re: _|_ vs null (Was 
Re: [scala-user] Cost of Option / Some vs null)&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;
&lt;div&gt;To possibly take some strength out of this discussion---none of us lived &lt;/div&gt;
&lt;div&gt;4000 yrs ago, so we really don&amp;#39;t know---, I&amp;#39;m always surprised to see &lt;/div&gt;
&lt;div&gt;that even the Chinese and Japanese and Hindu folks adopted ``our&amp;quot; &lt;/div&gt;
&lt;div&gt;numbers. They must have been a good invention. :)&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;Ishaaq Chandy schrieb:&lt;/div&gt;
&lt;div&gt;&amp;gt; We&amp;#39;ll just have to agree to disagree - even though the vast majority of &lt;/div&gt;
&lt;div&gt;&amp;gt; literature on the topic (including the Encyclopaedia Britannica - which &lt;/div&gt;
&lt;div&gt;&amp;gt; you were so quick to quote) agree with what I said: i.e. the decimal &lt;/div&gt;
&lt;div&gt;&amp;gt; number system, with zero as a place-holder denoting magnitude was an &lt;/div&gt;
&lt;div&gt;&amp;gt; Indian invention.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt; ... and yes I already knew the word &amp;quot;Algebra&amp;quot; is rooted from an Arab &lt;/div&gt;
&lt;div&gt;&amp;gt; word - that does not mean they invented the discipline - that honour &lt;/div&gt;
&lt;div&gt;&amp;gt; belongs to the ancient Babylonians (almost 4000 years ago!) - refined by &lt;/div&gt;
&lt;div&gt;&amp;gt; the Greeks and the Indians before the Arabs got hold of it. &lt;/div&gt;
&lt;div&gt;&amp;gt; (&lt;a href=&quot;http://en.wikipedia.org/wiki/Timeline_of_algebra&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://en.wikipedia.org/wiki/Timeline_of_algebra&lt;/a&gt;)&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt; I&amp;#39;m not belittling the myriad achievements of the Arabs - far from it, &lt;/div&gt;
&lt;div&gt;&amp;gt; they were essential to the history of Mathematics, but please don&amp;#39;t &lt;/div&gt;
&lt;div&gt;&amp;gt; miss-attribute stuff.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt; Ishaaq&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt; PS - and no, modern Indians do not call their numerals &amp;quot;Arab numerals&amp;quot;, &lt;/div&gt;
&lt;div&gt;&amp;gt; I know, because I am one of them :)  - &amp;quot;Arab numerals&amp;quot; is western &lt;/div&gt;
&lt;div&gt;&amp;gt; nomenclature.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt; 2009/11/22 Moez A. Abdel-Gawad &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26477745&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;moez@...&lt;/a&gt; &amp;lt;mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26477745&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;moez@...&lt;/a&gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     Ishaaq,&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     You wrote:&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt; Slightly off topic, but the Arabs got the concept of zero from the&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt; Indians - the Arabs then introduced it to the western world.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     That is a myth that is trying - by some well-intentioned people? -&lt;/div&gt;
&lt;div&gt;&amp;gt;     to be created/spread.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     Arabs may have borrowed other digits (ie, their shapes) from India&lt;/div&gt;
&lt;div&gt;&amp;gt;     (not a 100% sure fact either) but they have NOT borrowed 0.  They&lt;/div&gt;
&lt;div&gt;&amp;gt;     invented it, because they were the center of scientific research&lt;/div&gt;
&lt;div&gt;&amp;gt;     then, and they simply needed it. Without it, math - as they had&lt;/div&gt;
&lt;div&gt;&amp;gt;     (possibly) borrowed it from the Indians - would make much less&lt;/div&gt;
&lt;div&gt;&amp;gt;     sense.  That&amp;#39;s to the best of my knowledge/research on this&lt;/div&gt;
&lt;div&gt;&amp;gt;     off-topic historical point.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     Also, note that even *Indians* of today do call numerals we use&lt;/div&gt;
&lt;div&gt;&amp;gt;     &amp;#39;Arabic numerals&amp;#39;, because they - digits we/Arabs - use/used *look&lt;/div&gt;
&lt;div&gt;&amp;gt;     different* from ones they have/had (check TUG India and their TeX&lt;/div&gt;
&lt;div&gt;&amp;gt;     Tutorial, for example).&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     Finally, you may also like to check the &amp;#39;Islamic Mathematics&amp;#39;&lt;/div&gt;
&lt;div&gt;&amp;gt;     article, on Encyclopedia Britannica (despite some of its&lt;/div&gt;
&lt;div&gt;&amp;gt;     misinformation about Islam), for getting more info about the&lt;/div&gt;
&lt;div&gt;&amp;gt;     numerous contributions made by Arabs and Muslims to the fundamentals&lt;/div&gt;
&lt;div&gt;&amp;gt;     of Mathematics (should I mention where the word &amp;#39;Algebra&amp;#39; came from?).&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     Now...&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     Tony,&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     Are your responses an attempt to let ignorance - or misinformation -&lt;/div&gt;
&lt;div&gt;&amp;gt;     reign, among Scala users??  I hope not.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     I&amp;#39;ve *studied* Peirce&amp;#39;s TAPL (as it is commonly abbreviated), years&lt;/div&gt;
&lt;div&gt;&amp;gt;     ago! It is not The Qur&amp;#39;an, or a Bible, that has to believed in its&lt;/div&gt;
&lt;div&gt;&amp;gt;     totality, and without questioning.  TAPL has some fundamental&lt;/div&gt;
&lt;div&gt;&amp;gt;     criticisms against it.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     Relevant to our discussion is the fact/criticism that TAPL is too&lt;/div&gt;
&lt;div&gt;&amp;gt;     syntactic, and rarely discusses (mathematical) semantics. Saying&lt;/div&gt;
&lt;div&gt;&amp;gt;     this, I also recognize it is VERY HARD for people who are not&lt;/div&gt;
&lt;div&gt;&amp;gt;     familiar much with PL semantics (particularly Domain Theory, and&lt;/div&gt;
&lt;div&gt;&amp;gt;     denotational semantics) to realize TAPL&amp;#39;s &amp;quot;syntactic-ness&amp;quot;.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     I thus suggest YOU first read more, in PL semantics, particularly&lt;/div&gt;
&lt;div&gt;&amp;gt;     Dana Scott seminal work (for which he was awarded the Turing Award&lt;/div&gt;
&lt;div&gt;&amp;gt;     [the &amp;quot;Nobel Prize&amp;quot; of CS], and Gordon Plotkin and Cardelli&amp;#39;s&lt;/div&gt;
&lt;div&gt;&amp;gt;     important work on PL semantics, before talking about _|_ (and&lt;/div&gt;
&lt;div&gt;&amp;gt;     wrongly associating it with &amp;#39;null&amp;#39;).&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     And please remember: I was once - at the time of that discussion I&lt;/div&gt;
&lt;div&gt;&amp;gt;     had with Corky - in your shoes.  Corky then helped me, a lot, to&lt;/div&gt;
&lt;div&gt;&amp;gt;     realize the distinction you are now still unable to make.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     So, finally, please be careful before you talk, specially on a&lt;/div&gt;
&lt;div&gt;&amp;gt;     mailing list with so many members.  It is only because I am sure of&lt;/div&gt;
&lt;div&gt;&amp;gt;     my main premises, backed by Corky&amp;#39;s opinion, that I sent to this&lt;/div&gt;
&lt;div&gt;&amp;gt;     mailing list (I usually do not follow it/send to it much).  I - and&lt;/div&gt;
&lt;div&gt;&amp;gt;     you? - should not want to MISGUIDE the nice people on this list who&lt;/div&gt;
&lt;div&gt;&amp;gt;     are looking for sure and true information, right?&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     -Moez&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     PS: For the one who asked how can the (simple) program that squares&lt;/div&gt;
&lt;div&gt;&amp;gt;     its input non-terminate, I think you missed my point (I also&lt;/div&gt;
&lt;div&gt;&amp;gt;     suggest, if possible, studying semantics). My point is a GENERAL&lt;/div&gt;
&lt;div&gt;&amp;gt;     one, about all possible computations, not a (your) specific one. My&lt;/div&gt;
&lt;div&gt;&amp;gt;     point is that if you want ANY programming language to be *useful* it&lt;/div&gt;
&lt;div&gt;&amp;gt;     HAS to allow the possibility of non-termination.  That is a&lt;/div&gt;
&lt;div&gt;&amp;gt;     consequence of the halting-problem &amp;amp; the Church-Turing thesis, if I&lt;/div&gt;
&lt;div&gt;&amp;gt;     recall correctly and properly understand them.  Non-termination&lt;/div&gt;
&lt;div&gt;&amp;gt;     (&amp;quot;giving an answer, but at time infinity!&amp;quot;) ALWAYS has to be in our&lt;/div&gt;
&lt;div&gt;&amp;gt;     (programmers&amp;#39;) minds if we want to write any useful general software&lt;/div&gt;
&lt;div&gt;&amp;gt;     (as defined by Church&amp;#39;s lambda calculus and Turing&amp;#39;s Turing&lt;/div&gt;
&lt;div&gt;&amp;gt;     machines).  My point is, thus, sort of a &amp;quot;meta&amp;quot;-statement, about all&lt;/div&gt;
&lt;div&gt;&amp;gt;     useful programs we can write, not a statement/point about a specific&lt;/div&gt;
&lt;div&gt;&amp;gt;     program.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     PS2: Even though I find it exciting, I apologize if I may not&lt;/div&gt;
&lt;div&gt;&amp;gt;     continue this discussion further. I have too much other stuff on my&lt;/div&gt;
&lt;div&gt;&amp;gt;     plate that needs my immediate attention and time.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     Tony Morris wrote:&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt; I strongly recommend Types and Programming Languages by Benjamin&lt;/div&gt;
&lt;div&gt;&amp;gt;     Pierce.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt; Tony Morris wrote:&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; Moez A. Abdel-Gawad wrote:&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; Tony Morris wrote:&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt; 0 exists. null represents &amp;quot;that which does not exist.&amp;quot; In&lt;/div&gt;
&lt;div&gt;&amp;gt;     computational&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt; theory, what null represents is more commonly called bottom, _|_,&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt; undefined, non-terminating computation, logical absurdity. In&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; philosophy&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt; it is sometimes called &amp;quot;not even false.&amp;quot;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; That&amp;#39;s not true.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; Me and Corky (Prof. Robert Cartwright, my PhD advisor)&lt;/div&gt;
&lt;div&gt;&amp;gt;     discussed this&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; once while discussing Domain Theory (the &amp;quot;Math of Computing&amp;quot;, upon&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; which my PhD thesis is based).  We reached the conclusion that&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; non-termination is just, well, non-termination. It can NOT be&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; eliminated from computation.  Null, on the other hand *exists*,&lt;/div&gt;
&lt;div&gt;&amp;gt;     as a&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; genuine real but unusual/ exceptional/ unexpected value.  It&lt;/div&gt;
&lt;div&gt;&amp;gt;     should,&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; formally speaking, be added to each type that needs one such value&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; (some don&amp;#39;t), or forced on them by belonging to a&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; (non-expressible-in-Java) &amp;#39;NullType&amp;#39; that is a subtype (based on a&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; subclass) of all types (classes). &amp;#39;null&amp;#39; - just like all regular&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; values - can be got ridden of (is not absolutely essential).  _|_&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; (bottom)/non-termination is absolutely essential to the nature of&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; computation, and cannot be got ridden of.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; It&amp;#39;s true. You may not realise it but you contradicted yourself.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; Non-termination must exist in Scala, therefore, it must be&lt;/div&gt;
&lt;div&gt;&amp;gt;     represented.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; You said this yourself.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; Pattern matching will never be exhaustive, the error function is&lt;/div&gt;
&lt;div&gt;&amp;gt;     of type&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; forall A. A (which is a LIE!), and (wait for it) null exists. Null&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; represents that which does not exist and that is the extent of its&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; existence. In a language with different syntax, you might consider&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; calling it _|_. The null value is a value has the type forall A.&lt;/div&gt;
&lt;div&gt;&amp;gt;     A. This&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; is not a theorem. It represents bottom, non-termination,&lt;/div&gt;
&lt;div&gt;&amp;gt;     undefinedness,&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; logical absurdity. That is what null is. I recommend you try&lt;/div&gt;
&lt;div&gt;&amp;gt;     again with&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; Corky. You buggered up.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt; Philip Köster wrote:&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Discovering the `0&amp;#39; was what separated the Arabians from the&lt;/div&gt;
&lt;div&gt;&amp;gt;     Romans.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; &amp;#39;Arabs&amp;#39;, you mean.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; One day we used to teach the world.  We hope one day soon we would&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; again!  :)&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; -Moez&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
&lt;br /&gt; </content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Cost-of-Option---Some-vs-null-tp26438395p26477745.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26476254</id>
	<title>Re: Re: _|_ vs null (Was Re: Cost of Option / Some vs  null)</title>
	<published>2009-11-23T03:21:13Z</published>
	<updated>2009-11-23T03:21:13Z</updated>
	<author>
		<name>Kevin Wright-4</name>
	</author>
	<content type="html">But at the other end of the spectrum; I think that Europeans+Russians fairly got infinity, the proper formalised aleph-zero stuff, not just ∞ (Cantor was German, but born in Russia)&lt;br&gt;&lt;br&gt;Or if you just want to get very-very-very close to zero then we have Newton and Leibniz to thank for infinitesimals and differential calculus&lt;br&gt;
&lt;br&gt;Recent research has shown that traditional African villages have been built around a fractal structure for, well, a very long time.&lt;br&gt;&lt;br&gt;&lt;br&gt;There&amp;#39;s a lot to be said for the famous &amp;quot;standing on the shoulders of giants&amp;quot; quote.  Mathematics is truly global and is built from the work of a great many people scattered across the globe.&lt;br&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Mon, Nov 23, 2009 at 11:02 AM, Ishaaq Chandy &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26476254&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ishaaq@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
Ok, at the risk of irritating every one else on this mailing list - I&amp;#39;ll take the bait and continue this off-topic conversation with one last post.&lt;br&gt;&lt;br&gt;Please back your claims with references. You statements may be true, but they need to be backed with documentation to be believable.&lt;br&gt;


&lt;br&gt;Zero has had a long and convoluted history pre-dating the Indians, but the first *documented* instance of using the decimal system (which is based on the concept of using zeroes to denote place-holders to denote magnitude) as well as treating zero as a number in its own right is of Indian origin: &lt;a href=&quot;http://en.wikipedia.org/wiki/Zero#History&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://en.wikipedia.org/wiki/Zero#History&lt;/a&gt;&lt;br&gt;


&lt;br&gt;According to that wiki page the Chinese had a non-formalised concept of zero in the first century (not first by a long shot, the Babylonians win there again - 2nd millennium BCE! - followed by a number of other civilizations before the Chinese got to it), and that their first formalised documented instance of using zero as we do now was in 1247 CE. I concede that not everyone may consider wikipedia as a legitimate source, however it is not alone in making this claim, and it is the easiest one I could search and link to in an email like this. If you have documented evidence contradicting this please do share.&lt;br&gt;


&lt;br&gt;Ishaaq&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;2009/11/23 De Gao &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://gaode.ml&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;gaode.ml&lt;/a&gt;@&lt;a href=&quot;http://gmail.com&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;gmail.com&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;h5&quot;&gt;
&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;







&lt;div&gt;
&lt;div&gt;&lt;font color=&quot;#0000ff&quot; face=&quot;Verdana&quot; size=&quot;2&quot;&gt;add some fun: about 3500 yrs ago 
chinese already had number 1-9. about 2500 yrs ago chinese invent 0. So what YOU 
did was just invent how to write numbers in a simple way &lt;img src=&quot;http://old.nabble.com/attachment/26476254/0/14.gif&quot;&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div align=&quot;left&quot;&gt;
&lt;div align=&quot;left&quot;&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;
&lt;hr style=&quot;width: 122px; min-height: 2px;&quot; size=&quot;2&quot;&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color=&quot;#c0c0c0&quot;&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;&lt;span&gt;De 
Gao&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;2009-11-23&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;
&lt;hr&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;b&gt;发件人：&lt;/b&gt; Philip 
Köster&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;b&gt;发送时间：&lt;/b&gt; 
2009-11-21 23:22:08&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;b&gt;收件人：&lt;/b&gt; Ishaaq 
Chandy&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;b&gt;抄送：&lt;/b&gt; Moez A. Abdel-Gawad; 
Scala User List&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;b&gt;主题：&lt;/b&gt; Re: _|_ vs null (Was 
Re: [scala-user] Cost of Option / Some vs null)&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;
&lt;div&gt;To possibly take some strength out of this discussion---none of us lived &lt;/div&gt;
&lt;div&gt;4000 yrs ago, so we really don&amp;#39;t know---, I&amp;#39;m always surprised to see &lt;/div&gt;
&lt;div&gt;that even the Chinese and Japanese and Hindu folks adopted ``our&amp;quot; &lt;/div&gt;
&lt;div&gt;numbers. They must have been a good invention. :)&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;Ishaaq Chandy schrieb:&lt;/div&gt;
&lt;div&gt;&amp;gt; We&amp;#39;ll just have to agree to disagree - even though the vast majority of &lt;/div&gt;
&lt;div&gt;&amp;gt; literature on the topic (including the Encyclopaedia Britannica - which &lt;/div&gt;
&lt;div&gt;&amp;gt; you were so quick to quote) agree with what I said: i.e. the decimal &lt;/div&gt;
&lt;div&gt;&amp;gt; number system, with zero as a place-holder denoting magnitude was an &lt;/div&gt;
&lt;div&gt;&amp;gt; Indian invention.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt; ... and yes I already knew the word &amp;quot;Algebra&amp;quot; is rooted from an Arab &lt;/div&gt;
&lt;div&gt;&amp;gt; word - that does not mean they invented the discipline - that honour &lt;/div&gt;
&lt;div&gt;&amp;gt; belongs to the ancient Babylonians (almost 4000 years ago!) - refined by &lt;/div&gt;
&lt;div&gt;&amp;gt; the Greeks and the Indians before the Arabs got hold of it. &lt;/div&gt;
&lt;div&gt;&amp;gt; (&lt;a href=&quot;http://en.wikipedia.org/wiki/Timeline_of_algebra&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://en.wikipedia.org/wiki/Timeline_of_algebra&lt;/a&gt;)&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt; I&amp;#39;m not belittling the myriad achievements of the Arabs - far from it, &lt;/div&gt;
&lt;div&gt;&amp;gt; they were essential to the history of Mathematics, but please don&amp;#39;t &lt;/div&gt;
&lt;div&gt;&amp;gt; miss-attribute stuff.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt; Ishaaq&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt; PS - and no, modern Indians do not call their numerals &amp;quot;Arab numerals&amp;quot;, &lt;/div&gt;
&lt;div&gt;&amp;gt; I know, because I am one of them :)  - &amp;quot;Arab numerals&amp;quot; is western &lt;/div&gt;
&lt;div&gt;&amp;gt; nomenclature.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt; 2009/11/22 Moez A. Abdel-Gawad &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26476254&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;moez@...&lt;/a&gt; &amp;lt;mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26476254&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;moez@...&lt;/a&gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     Ishaaq,&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     You wrote:&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt; Slightly off topic, but the Arabs got the concept of zero from the&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt; Indians - the Arabs then introduced it to the western world.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     That is a myth that is trying - by some well-intentioned people? -&lt;/div&gt;
&lt;div&gt;&amp;gt;     to be created/spread.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     Arabs may have borrowed other digits (ie, their shapes) from India&lt;/div&gt;
&lt;div&gt;&amp;gt;     (not a 100% sure fact either) but they have NOT borrowed 0.  They&lt;/div&gt;
&lt;div&gt;&amp;gt;     invented it, because they were the center of scientific research&lt;/div&gt;
&lt;div&gt;&amp;gt;     then, and they simply needed it. Without it, math - as they had&lt;/div&gt;
&lt;div&gt;&amp;gt;     (possibly) borrowed it from the Indians - would make much less&lt;/div&gt;
&lt;div&gt;&amp;gt;     sense.  That&amp;#39;s to the best of my knowledge/research on this&lt;/div&gt;
&lt;div&gt;&amp;gt;     off-topic historical point.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     Also, note that even *Indians* of today do call numerals we use&lt;/div&gt;
&lt;div&gt;&amp;gt;     &amp;#39;Arabic numerals&amp;#39;, because they - digits we/Arabs - use/used *look&lt;/div&gt;
&lt;div&gt;&amp;gt;     different* from ones they have/had (check TUG India and their TeX&lt;/div&gt;
&lt;div&gt;&amp;gt;     Tutorial, for example).&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     Finally, you may also like to check the &amp;#39;Islamic Mathematics&amp;#39;&lt;/div&gt;
&lt;div&gt;&amp;gt;     article, on Encyclopedia Britannica (despite some of its&lt;/div&gt;
&lt;div&gt;&amp;gt;     misinformation about Islam), for getting more info about the&lt;/div&gt;
&lt;div&gt;&amp;gt;     numerous contributions made by Arabs and Muslims to the fundamentals&lt;/div&gt;
&lt;div&gt;&amp;gt;     of Mathematics (should I mention where the word &amp;#39;Algebra&amp;#39; came from?).&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     Now...&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     Tony,&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     Are your responses an attempt to let ignorance - or misinformation -&lt;/div&gt;
&lt;div&gt;&amp;gt;     reign, among Scala users??  I hope not.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     I&amp;#39;ve *studied* Peirce&amp;#39;s TAPL (as it is commonly abbreviated), years&lt;/div&gt;
&lt;div&gt;&amp;gt;     ago! It is not The Qur&amp;#39;an, or a Bible, that has to believed in its&lt;/div&gt;
&lt;div&gt;&amp;gt;     totality, and without questioning.  TAPL has some fundamental&lt;/div&gt;
&lt;div&gt;&amp;gt;     criticisms against it.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     Relevant to our discussion is the fact/criticism that TAPL is too&lt;/div&gt;
&lt;div&gt;&amp;gt;     syntactic, and rarely discusses (mathematical) semantics. Saying&lt;/div&gt;
&lt;div&gt;&amp;gt;     this, I also recognize it is VERY HARD for people who are not&lt;/div&gt;
&lt;div&gt;&amp;gt;     familiar much with PL semantics (particularly Domain Theory, and&lt;/div&gt;
&lt;div&gt;&amp;gt;     denotational semantics) to realize TAPL&amp;#39;s &amp;quot;syntactic-ness&amp;quot;.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     I thus suggest YOU first read more, in PL semantics, particularly&lt;/div&gt;
&lt;div&gt;&amp;gt;     Dana Scott seminal work (for which he was awarded the Turing Award&lt;/div&gt;
&lt;div&gt;&amp;gt;     [the &amp;quot;Nobel Prize&amp;quot; of CS], and Gordon Plotkin and Cardelli&amp;#39;s&lt;/div&gt;
&lt;div&gt;&amp;gt;     important work on PL semantics, before talking about _|_ (and&lt;/div&gt;
&lt;div&gt;&amp;gt;     wrongly associating it with &amp;#39;null&amp;#39;).&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     And please remember: I was once - at the time of that discussion I&lt;/div&gt;
&lt;div&gt;&amp;gt;     had with Corky - in your shoes.  Corky then helped me, a lot, to&lt;/div&gt;
&lt;div&gt;&amp;gt;     realize the distinction you are now still unable to make.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     So, finally, please be careful before you talk, specially on a&lt;/div&gt;
&lt;div&gt;&amp;gt;     mailing list with so many members.  It is only because I am sure of&lt;/div&gt;
&lt;div&gt;&amp;gt;     my main premises, backed by Corky&amp;#39;s opinion, that I sent to this&lt;/div&gt;
&lt;div&gt;&amp;gt;     mailing list (I usually do not follow it/send to it much).  I - and&lt;/div&gt;
&lt;div&gt;&amp;gt;     you? - should not want to MISGUIDE the nice people on this list who&lt;/div&gt;
&lt;div&gt;&amp;gt;     are looking for sure and true information, right?&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     -Moez&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     PS: For the one who asked how can the (simple) program that squares&lt;/div&gt;
&lt;div&gt;&amp;gt;     its input non-terminate, I think you missed my point (I also&lt;/div&gt;
&lt;div&gt;&amp;gt;     suggest, if possible, studying semantics). My point is a GENERAL&lt;/div&gt;
&lt;div&gt;&amp;gt;     one, about all possible computations, not a (your) specific one. My&lt;/div&gt;
&lt;div&gt;&amp;gt;     point is that if you want ANY programming language to be *useful* it&lt;/div&gt;
&lt;div&gt;&amp;gt;     HAS to allow the possibility of non-termination.  That is a&lt;/div&gt;
&lt;div&gt;&amp;gt;     consequence of the halting-problem &amp;amp; the Church-Turing thesis, if I&lt;/div&gt;
&lt;div&gt;&amp;gt;     recall correctly and properly understand them.  Non-termination&lt;/div&gt;
&lt;div&gt;&amp;gt;     (&amp;quot;giving an answer, but at time infinity!&amp;quot;) ALWAYS has to be in our&lt;/div&gt;
&lt;div&gt;&amp;gt;     (programmers&amp;#39;) minds if we want to write any useful general software&lt;/div&gt;
&lt;div&gt;&amp;gt;     (as defined by Church&amp;#39;s lambda calculus and Turing&amp;#39;s Turing&lt;/div&gt;
&lt;div&gt;&amp;gt;     machines).  My point is, thus, sort of a &amp;quot;meta&amp;quot;-statement, about all&lt;/div&gt;
&lt;div&gt;&amp;gt;     useful programs we can write, not a statement/point about a specific&lt;/div&gt;
&lt;div&gt;&amp;gt;     program.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     PS2: Even though I find it exciting, I apologize if I may not&lt;/div&gt;
&lt;div&gt;&amp;gt;     continue this discussion further. I have too much other stuff on my&lt;/div&gt;
&lt;div&gt;&amp;gt;     plate that needs my immediate attention and time.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     Tony Morris wrote:&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt; I strongly recommend Types and Programming Languages by Benjamin&lt;/div&gt;
&lt;div&gt;&amp;gt;     Pierce.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt; Tony Morris wrote:&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; Moez A. Abdel-Gawad wrote:&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; Tony Morris wrote:&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt; 0 exists. null represents &amp;quot;that which does not exist.&amp;quot; In&lt;/div&gt;
&lt;div&gt;&amp;gt;     computational&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt; theory, what null represents is more commonly called bottom, _|_,&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt; undefined, non-terminating computation, logical absurdity. In&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; philosophy&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt; it is sometimes called &amp;quot;not even false.&amp;quot;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; That&amp;#39;s not true.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; Me and Corky (Prof. Robert Cartwright, my PhD advisor)&lt;/div&gt;
&lt;div&gt;&amp;gt;     discussed this&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; once while discussing Domain Theory (the &amp;quot;Math of Computing&amp;quot;, upon&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; which my PhD thesis is based).  We reached the conclusion that&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; non-termination is just, well, non-termination. It can NOT be&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; eliminated from computation.  Null, on the other hand *exists*,&lt;/div&gt;
&lt;div&gt;&amp;gt;     as a&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; genuine real but unusual/ exceptional/ unexpected value.  It&lt;/div&gt;
&lt;div&gt;&amp;gt;     should,&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; formally speaking, be added to each type that needs one such value&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; (some don&amp;#39;t), or forced on them by belonging to a&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; (non-expressible-in-Java) &amp;#39;NullType&amp;#39; that is a subtype (based on a&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; subclass) of all types (classes). &amp;#39;null&amp;#39; - just like all regular&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; values - can be got ridden of (is not absolutely essential).  _|_&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; (bottom)/non-termination is absolutely essential to the nature of&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; computation, and cannot be got ridden of.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; It&amp;#39;s true. You may not realise it but you contradicted yourself.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; Non-termination must exist in Scala, therefore, it must be&lt;/div&gt;
&lt;div&gt;&amp;gt;     represented.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; You said this yourself.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; Pattern matching will never be exhaustive, the error function is&lt;/div&gt;
&lt;div&gt;&amp;gt;     of type&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; forall A. A (which is a LIE!), and (wait for it) null exists. Null&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; represents that which does not exist and that is the extent of its&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; existence. In a language with different syntax, you might consider&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; calling it _|_. The null value is a value has the type forall A.&lt;/div&gt;
&lt;div&gt;&amp;gt;     A. This&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; is not a theorem. It represents bottom, non-termination,&lt;/div&gt;
&lt;div&gt;&amp;gt;     undefinedness,&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; logical absurdity. That is what null is. I recommend you try&lt;/div&gt;
&lt;div&gt;&amp;gt;     again with&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; Corky. You buggered up.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt; Philip Köster wrote:&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Discovering the `0&amp;#39; was what separated the Arabians from the&lt;/div&gt;
&lt;div&gt;&amp;gt;     Romans.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; &amp;#39;Arabs&amp;#39;, you mean.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; One day we used to teach the world.  We hope one day soon we would&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; again!  :)&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; -Moez&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
&lt;br /&gt; </content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Cost-of-Option---Some-vs-null-tp26438395p26476254.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26476203</id>
	<title>Re: Java Parser in Scala avalable ?</title>
	<published>2009-11-23T03:16:25Z</published>
	<updated>2009-11-23T03:16:25Z</updated>
	<author>
		<name>pchapin</name>
	</author>
	<content type="html">Manohar Jonnalagedda
&lt;br&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26476203&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;manojo10386@...&lt;/a&gt;&amp;gt; wrote in
&lt;br&gt;news:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26476203&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;d17eedc90911221707n4be9c9d0q4e63245c67eb2b92@...&lt;/a&gt;: 
&lt;br&gt;&lt;br&gt;&amp;gt; I am working in a project where I would be needing to analyse Java
&lt;br&gt;&amp;gt; code, and have therefore started to work on a parser for Java. The
&lt;br&gt;&amp;gt; size of the grammar being immense however, before going deeper, I was
&lt;br&gt;&amp;gt; wondering if anyone had attempted a similar (futile ?) feat, and if
&lt;br&gt;&amp;gt; there was some code available in the public domain I could find ?
&lt;br&gt;&lt;br&gt;Since Scala can easily call Java code, you might also find what you need in &amp;nbsp;
&lt;br&gt;Java somewhere. I'm working on a project where I needed a parser for the 
&lt;br&gt;nesC programming language. I used ANTLR to create the parser in Java and 
&lt;br&gt;then used the result from my Scala program.
&lt;br&gt;&lt;br&gt;Peter
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Java-Parser-in-Scala-avalable---tp26471406p26476203.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26476158</id>
	<title>Re: Java Parser in Scala avalable ?</title>
	<published>2009-11-23T03:12:14Z</published>
	<updated>2009-11-23T03:12:14Z</updated>
	<author>
		<name>Mohamed Bana-6</name>
	</author>
	<content type="html">&lt;div&gt;I used the Eclipse compiler to do some analysis once;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;  &lt;a href=&quot;http://bitbucket.org/mbana/moodmetricsplug-in/src/tip/src/metricsplugin/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bitbucket.org/mbana/moodmetricsplug-in/src/tip/src/metricsplugin/&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;The calc file is where the analysis is done.&lt;/div&gt;&lt;br clear=&quot;all&quot;&gt; —Mohamed&lt;br&gt;
&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Mon, Nov 23, 2009 at 3:21 AM, Manohar Jonnalagedda &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26476158&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;manojo10386@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;&quot;&gt;

The idea is to compare abstract syntax trees of different java code snippets. A complete parser and syntactic tree might therefore not be necessary, but I thought I could refine the parser once I had the whole thing.&lt;br&gt;
&lt;br&gt;

Thanks for the suggesting the Eclipse compiler, I will have a look at it.&lt;br&gt;&lt;font color=&quot;#888888&quot;&gt;&lt;br&gt;Manohar&lt;/font&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;h5&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Sun, Nov 22, 2009 at 5:33 PM, Mohamed Bana &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26476158&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;mohamed@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;


&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left:1px solid rgb(204, 204, 204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex&quot;&gt;&lt;div&gt;What exactly are you trying to analyse?  Have you looked at the Eclipse compiler?&lt;/div&gt;
&lt;br clear=&quot;all&quot;&gt;&lt;font color=&quot;#888888&quot;&gt; —Mohamed&lt;/font&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;
&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Mon, Nov 23, 2009 at 1:07 AM, Manohar Jonnalagedda &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26476158&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;manojo10386@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left:1px solid rgb(204, 204, 204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex&quot;&gt;




Hello all,&lt;br&gt;&lt;br&gt;I am working in a project where I would be needing to analyse Java code, and have therefore started to work on a parser for Java. The size of the grammar being immense however, before going deeper, I was wondering if anyone had attempted a similar (futile ?) feat, and if there was some code available in the public domain I could find ?&lt;br&gt;





&lt;br&gt;Thanks,&lt;br&gt;&lt;font color=&quot;#888888&quot;&gt;Manohar&lt;br&gt;
&lt;/font&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Java-Parser-in-Scala-avalable---tp26471406p26476158.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26476018</id>
	<title>Re: Re: _|_ vs null (Was Re: Cost of Option / Some vs  null)</title>
	<published>2009-11-23T03:02:13Z</published>
	<updated>2009-11-23T03:02:13Z</updated>
	<author>
		<name>Ishaaq Chandy</name>
	</author>
	<content type="html">Ok, at the risk of irritating every one else on this mailing list - I&amp;#39;ll take the bait and continue this off-topic conversation with one last post.&lt;br&gt;&lt;br&gt;Please back your claims with references. You statements may be true, but they need to be backed with documentation to be believable.&lt;br&gt;

&lt;br&gt;Zero has had a long and convoluted history pre-dating the Indians, but the first *documented* instance of using the decimal system (which is based on the concept of using zeroes to denote place-holders to denote magnitude) as well as treating zero as a number in its own right is of Indian origin: &lt;a href=&quot;http://en.wikipedia.org/wiki/Zero#History&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://en.wikipedia.org/wiki/Zero#History&lt;/a&gt;&lt;br&gt;

&lt;br&gt;According to that wiki page the Chinese had a non-formalised concept of zero in the first century (not first by a long shot, the Babylonians win there again - 2nd millennium BCE! - followed by a number of other civilizations before the Chinese got to it), and that their first formalised documented instance of using zero as we do now was in 1247 CE. I concede that not everyone may consider wikipedia as a legitimate source, however it is not alone in making this claim, and it is the easiest one I could search and link to in an email like this. If you have documented evidence contradicting this please do share.&lt;br&gt;

&lt;br&gt;Ishaaq&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;2009/11/23 De Gao &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://gaode.ml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gaode.ml&lt;/a&gt;@&lt;a href=&quot;http://gmail.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gmail.com&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;







&lt;div&gt;
&lt;div&gt;&lt;font color=&quot;#0000ff&quot; face=&quot;Verdana&quot; size=&quot;2&quot;&gt;add some fun: about 3500 yrs ago 
chinese already had number 1-9. about 2500 yrs ago chinese invent 0. So what YOU 
did was just invent how to write numbers in a simple way &lt;img src=&quot;http://old.nabble.com/attachment/26476018/0/14.gif&quot;&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div align=&quot;left&quot;&gt;
&lt;div align=&quot;left&quot;&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;
&lt;hr style=&quot;width: 122px; min-height: 2px;&quot; size=&quot;2&quot;&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color=&quot;#c0c0c0&quot;&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;&lt;span&gt;De 
Gao&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;2009-11-23&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;
&lt;hr&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;b&gt;发件人：&lt;/b&gt; Philip 
Köster&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;b&gt;发送时间：&lt;/b&gt; 
2009-11-21 23:22:08&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;b&gt;收件人：&lt;/b&gt; Ishaaq 
Chandy&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;b&gt;抄送：&lt;/b&gt; Moez A. Abdel-Gawad; 
Scala User List&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;b&gt;主题：&lt;/b&gt; Re: _|_ vs null (Was 
Re: [scala-user] Cost of Option / Some vs null)&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;h5&quot;&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;Verdana&quot; size=&quot;2&quot;&gt;
&lt;div&gt;To possibly take some strength out of this discussion---none of us lived &lt;/div&gt;
&lt;div&gt;4000 yrs ago, so we really don&amp;#39;t know---, I&amp;#39;m always surprised to see &lt;/div&gt;
&lt;div&gt;that even the Chinese and Japanese and Hindu folks adopted ``our&amp;quot; &lt;/div&gt;
&lt;div&gt;numbers. They must have been a good invention. :)&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;Ishaaq Chandy schrieb:&lt;/div&gt;
&lt;div&gt;&amp;gt; We&amp;#39;ll just have to agree to disagree - even though the vast majority of &lt;/div&gt;
&lt;div&gt;&amp;gt; literature on the topic (including the Encyclopaedia Britannica - which &lt;/div&gt;
&lt;div&gt;&amp;gt; you were so quick to quote) agree with what I said: i.e. the decimal &lt;/div&gt;
&lt;div&gt;&amp;gt; number system, with zero as a place-holder denoting magnitude was an &lt;/div&gt;
&lt;div&gt;&amp;gt; Indian invention.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt; ... and yes I already knew the word &amp;quot;Algebra&amp;quot; is rooted from an Arab &lt;/div&gt;
&lt;div&gt;&amp;gt; word - that does not mean they invented the discipline - that honour &lt;/div&gt;
&lt;div&gt;&amp;gt; belongs to the ancient Babylonians (almost 4000 years ago!) - refined by &lt;/div&gt;
&lt;div&gt;&amp;gt; the Greeks and the Indians before the Arabs got hold of it. &lt;/div&gt;
&lt;div&gt;&amp;gt; (&lt;a href=&quot;http://en.wikipedia.org/wiki/Timeline_of_algebra&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://en.wikipedia.org/wiki/Timeline_of_algebra&lt;/a&gt;)&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt; I&amp;#39;m not belittling the myriad achievements of the Arabs - far from it, &lt;/div&gt;
&lt;div&gt;&amp;gt; they were essential to the history of Mathematics, but please don&amp;#39;t &lt;/div&gt;
&lt;div&gt;&amp;gt; miss-attribute stuff.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt; Ishaaq&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt; PS - and no, modern Indians do not call their numerals &amp;quot;Arab numerals&amp;quot;, &lt;/div&gt;
&lt;div&gt;&amp;gt; I know, because I am one of them :)  - &amp;quot;Arab numerals&amp;quot; is western &lt;/div&gt;
&lt;div&gt;&amp;gt; nomenclature.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt; 2009/11/22 Moez A. Abdel-Gawad &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26476018&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;moez@...&lt;/a&gt; &amp;lt;mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26476018&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;moez@...&lt;/a&gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     Ishaaq,&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     You wrote:&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt; Slightly off topic, but the Arabs got the concept of zero from the&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt; Indians - the Arabs then introduced it to the western world.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     That is a myth that is trying - by some well-intentioned people? -&lt;/div&gt;
&lt;div&gt;&amp;gt;     to be created/spread.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     Arabs may have borrowed other digits (ie, their shapes) from India&lt;/div&gt;
&lt;div&gt;&amp;gt;     (not a 100% sure fact either) but they have NOT borrowed 0.  They&lt;/div&gt;
&lt;div&gt;&amp;gt;     invented it, because they were the center of scientific research&lt;/div&gt;
&lt;div&gt;&amp;gt;     then, and they simply needed it. Without it, math - as they had&lt;/div&gt;
&lt;div&gt;&amp;gt;     (possibly) borrowed it from the Indians - would make much less&lt;/div&gt;
&lt;div&gt;&amp;gt;     sense.  That&amp;#39;s to the best of my knowledge/research on this&lt;/div&gt;
&lt;div&gt;&amp;gt;     off-topic historical point.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     Also, note that even *Indians* of today do call numerals we use&lt;/div&gt;
&lt;div&gt;&amp;gt;     &amp;#39;Arabic numerals&amp;#39;, because they - digits we/Arabs - use/used *look&lt;/div&gt;
&lt;div&gt;&amp;gt;     different* from ones they have/had (check TUG India and their TeX&lt;/div&gt;
&lt;div&gt;&amp;gt;     Tutorial, for example).&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     Finally, you may also like to check the &amp;#39;Islamic Mathematics&amp;#39;&lt;/div&gt;
&lt;div&gt;&amp;gt;     article, on Encyclopedia Britannica (despite some of its&lt;/div&gt;
&lt;div&gt;&amp;gt;     misinformation about Islam), for getting more info about the&lt;/div&gt;
&lt;div&gt;&amp;gt;     numerous contributions made by Arabs and Muslims to the fundamentals&lt;/div&gt;
&lt;div&gt;&amp;gt;     of Mathematics (should I mention where the word &amp;#39;Algebra&amp;#39; came from?).&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     Now...&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     Tony,&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     Are your responses an attempt to let ignorance - or misinformation -&lt;/div&gt;
&lt;div&gt;&amp;gt;     reign, among Scala users??  I hope not.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     I&amp;#39;ve *studied* Peirce&amp;#39;s TAPL (as it is commonly abbreviated), years&lt;/div&gt;
&lt;div&gt;&amp;gt;     ago! It is not The Qur&amp;#39;an, or a Bible, that has to believed in its&lt;/div&gt;
&lt;div&gt;&amp;gt;     totality, and without questioning.  TAPL has some fundamental&lt;/div&gt;
&lt;div&gt;&amp;gt;     criticisms against it.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     Relevant to our discussion is the fact/criticism that TAPL is too&lt;/div&gt;
&lt;div&gt;&amp;gt;     syntactic, and rarely discusses (mathematical) semantics. Saying&lt;/div&gt;
&lt;div&gt;&amp;gt;     this, I also recognize it is VERY HARD for people who are not&lt;/div&gt;
&lt;div&gt;&amp;gt;     familiar much with PL semantics (particularly Domain Theory, and&lt;/div&gt;
&lt;div&gt;&amp;gt;     denotational semantics) to realize TAPL&amp;#39;s &amp;quot;syntactic-ness&amp;quot;.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     I thus suggest YOU first read more, in PL semantics, particularly&lt;/div&gt;
&lt;div&gt;&amp;gt;     Dana Scott seminal work (for which he was awarded the Turing Award&lt;/div&gt;
&lt;div&gt;&amp;gt;     [the &amp;quot;Nobel Prize&amp;quot; of CS], and Gordon Plotkin and Cardelli&amp;#39;s&lt;/div&gt;
&lt;div&gt;&amp;gt;     important work on PL semantics, before talking about _|_ (and&lt;/div&gt;
&lt;div&gt;&amp;gt;     wrongly associating it with &amp;#39;null&amp;#39;).&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     And please remember: I was once - at the time of that discussion I&lt;/div&gt;
&lt;div&gt;&amp;gt;     had with Corky - in your shoes.  Corky then helped me, a lot, to&lt;/div&gt;
&lt;div&gt;&amp;gt;     realize the distinction you are now still unable to make.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     So, finally, please be careful before you talk, specially on a&lt;/div&gt;
&lt;div&gt;&amp;gt;     mailing list with so many members.  It is only because I am sure of&lt;/div&gt;
&lt;div&gt;&amp;gt;     my main premises, backed by Corky&amp;#39;s opinion, that I sent to this&lt;/div&gt;
&lt;div&gt;&amp;gt;     mailing list (I usually do not follow it/send to it much).  I - and&lt;/div&gt;
&lt;div&gt;&amp;gt;     you? - should not want to MISGUIDE the nice people on this list who&lt;/div&gt;
&lt;div&gt;&amp;gt;     are looking for sure and true information, right?&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     -Moez&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     PS: For the one who asked how can the (simple) program that squares&lt;/div&gt;
&lt;div&gt;&amp;gt;     its input non-terminate, I think you missed my point (I also&lt;/div&gt;
&lt;div&gt;&amp;gt;     suggest, if possible, studying semantics). My point is a GENERAL&lt;/div&gt;
&lt;div&gt;&amp;gt;     one, about all possible computations, not a (your) specific one. My&lt;/div&gt;
&lt;div&gt;&amp;gt;     point is that if you want ANY programming language to be *useful* it&lt;/div&gt;
&lt;div&gt;&amp;gt;     HAS to allow the possibility of non-termination.  That is a&lt;/div&gt;
&lt;div&gt;&amp;gt;     consequence of the halting-problem &amp;amp; the Church-Turing thesis, if I&lt;/div&gt;
&lt;div&gt;&amp;gt;     recall correctly and properly understand them.  Non-termination&lt;/div&gt;
&lt;div&gt;&amp;gt;     (&amp;quot;giving an answer, but at time infinity!&amp;quot;) ALWAYS has to be in our&lt;/div&gt;
&lt;div&gt;&amp;gt;     (programmers&amp;#39;) minds if we want to write any useful general software&lt;/div&gt;
&lt;div&gt;&amp;gt;     (as defined by Church&amp;#39;s lambda calculus and Turing&amp;#39;s Turing&lt;/div&gt;
&lt;div&gt;&amp;gt;     machines).  My point is, thus, sort of a &amp;quot;meta&amp;quot;-statement, about all&lt;/div&gt;
&lt;div&gt;&amp;gt;     useful programs we can write, not a statement/point about a specific&lt;/div&gt;
&lt;div&gt;&amp;gt;     program.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     PS2: Even though I find it exciting, I apologize if I may not&lt;/div&gt;
&lt;div&gt;&amp;gt;     continue this discussion further. I have too much other stuff on my&lt;/div&gt;
&lt;div&gt;&amp;gt;     plate that needs my immediate attention and time.&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt;     Tony Morris wrote:&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt; I strongly recommend Types and Programming Languages by Benjamin&lt;/div&gt;
&lt;div&gt;&amp;gt;     Pierce.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt; Tony Morris wrote:&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; Moez A. Abdel-Gawad wrote:&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; Tony Morris wrote:&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt; 0 exists. null represents &amp;quot;that which does not exist.&amp;quot; In&lt;/div&gt;
&lt;div&gt;&amp;gt;     computational&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt; theory, what null represents is more commonly called bottom, _|_,&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt; undefined, non-terminating computation, logical absurdity. In&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; philosophy&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt; it is sometimes called &amp;quot;not even false.&amp;quot;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; That&amp;#39;s not true.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; Me and Corky (Prof. Robert Cartwright, my PhD advisor)&lt;/div&gt;
&lt;div&gt;&amp;gt;     discussed this&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; once while discussing Domain Theory (the &amp;quot;Math of Computing&amp;quot;, upon&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; which my PhD thesis is based).  We reached the conclusion that&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; non-termination is just, well, non-termination. It can NOT be&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; eliminated from computation.  Null, on the other hand *exists*,&lt;/div&gt;
&lt;div&gt;&amp;gt;     as a&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; genuine real but unusual/ exceptional/ unexpected value.  It&lt;/div&gt;
&lt;div&gt;&amp;gt;     should,&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; formally speaking, be added to each type that needs one such value&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; (some don&amp;#39;t), or forced on them by belonging to a&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; (non-expressible-in-Java) &amp;#39;NullType&amp;#39; that is a subtype (based on a&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; subclass) of all types (classes). &amp;#39;null&amp;#39; - just like all regular&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; values - can be got ridden of (is not absolutely essential).  _|_&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; (bottom)/non-termination is absolutely essential to the nature of&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; computation, and cannot be got ridden of.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; It&amp;#39;s true. You may not realise it but you contradicted yourself.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; Non-termination must exist in Scala, therefore, it must be&lt;/div&gt;
&lt;div&gt;&amp;gt;     represented.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; You said this yourself.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; Pattern matching will never be exhaustive, the error function is&lt;/div&gt;
&lt;div&gt;&amp;gt;     of type&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; forall A. A (which is a LIE!), and (wait for it) null exists. Null&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; represents that which does not exist and that is the extent of its&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; existence. In a language with different syntax, you might consider&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; calling it _|_. The null value is a value has the type forall A.&lt;/div&gt;
&lt;div&gt;&amp;gt;     A. This&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; is not a theorem. It represents bottom, non-termination,&lt;/div&gt;
&lt;div&gt;&amp;gt;     undefinedness,&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; logical absurdity. That is what null is. I recommend you try&lt;/div&gt;
&lt;div&gt;&amp;gt;     again with&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt; Corky. You buggered up.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt; Philip Köster wrote:&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Discovering the `0&amp;#39; was what separated the Arabians from the&lt;/div&gt;
&lt;div&gt;&amp;gt;     Romans.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; &amp;#39;Arabs&amp;#39;, you mean.&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; One day we used to teach the world.  We hope one day soon we would&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; again!  :)&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt; -Moez&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt;      &amp;gt;&lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;
&lt;div&gt;&amp;gt; &lt;/div&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
&lt;br /&gt; </content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Cost-of-Option---Some-vs-null-tp26438395p26476018.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26473937</id>
	<title>Re: Cost of Option/Some vs null, take 2</title>
	<published>2009-11-22T23:56:07Z</published>
	<updated>2009-11-22T23:56:07Z</updated>
	<author>
		<name>Ismael Juma</name>
	</author>
	<content type="html">On Sun, 2009-11-22 at 18:52 -0800, Blair Zajac wrote:
&lt;br&gt;&amp;gt; That's right, readOnly has been removed. &amp;nbsp;Between the synchronization and the lack of readOnly in 2.8.x I decided to wrap the Google Collection classes.
&lt;br&gt;&lt;br&gt;Does anyone know the reasoning for the removal? Maybe we can lobby to
&lt;br&gt;get it back. :)
&lt;br&gt;&lt;br&gt;Ismael
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Cost-of-Option-Some-vs-null%2C-take-2-tp26465746p26473937.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26473927</id>
	<title>Re: Re: _|_ vs null (Was Re: [scala-user] Cost of Option / Some vs null)</title>
	<published>2009-11-22T23:54:45Z</published>
	<updated>2009-11-22T23:54:45Z</updated>
	<author>
		<name>De Gao</name>
	</author>
	<content type="html">﻿&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;HEAD&gt;
&lt;META content=&quot;text/html; charset=utf-8&quot; http-equiv=Content-Type&gt;
&lt;META name=GENERATOR content=&quot;MSHTML 8.00.6001.18852&quot;&gt;

&lt;/HEAD&gt;
&lt;BODY&gt;
&lt;DIV&gt;&lt;FONT color=#0000ff size=2 face=Verdana&gt;add some fun: about 3500 yrs ago 
chinese already had number 1-9. about 2500 yrs ago chinese invent 0. So what YOU 
did was just invent how to write numbers in a simple way &lt;IMG src=&quot;http://old.nabble.com/attachment/26473927/0/14.gif&quot;&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT size=2 face=Verdana&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV align=left&gt;
&lt;DIV align=left&gt;&lt;FONT size=2 face=Verdana&gt;
&lt;HR style=&quot;WIDTH: 122px; HEIGHT: 2px&quot; SIZE=2&gt;
&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#c0c0c0&gt;&lt;FONT size=2 face=Verdana&gt;&lt;SPAN&gt;De 
Gao&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT size=2 face=Verdana&gt;2009-11-23&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT size=2 face=Verdana&gt;
&lt;HR&gt;
&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;发件人：&lt;/STRONG&gt; Philip 
Köster&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;发送时间：&lt;/STRONG&gt; 
2009-11-21&amp;nbsp;23:22:08&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;收件人：&lt;/STRONG&gt; Ishaaq 
Chandy&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;抄送：&lt;/STRONG&gt; Moez A. Abdel-Gawad; 
Scala User List&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;主题：&lt;/STRONG&gt; Re: _|_ vs null (Was 
Re: [scala-user] Cost of Option / Some vs null)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT size=2 face=Verdana&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT size=2 face=Verdana&gt;
&lt;DIV&gt;To&amp;nbsp;possibly&amp;nbsp;take&amp;nbsp;some&amp;nbsp;strength&amp;nbsp;out&amp;nbsp;of&amp;nbsp;this&amp;nbsp;discussion---none&amp;nbsp;of&amp;nbsp;us&amp;nbsp;lived&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;4000&amp;nbsp;yrs&amp;nbsp;ago,&amp;nbsp;so&amp;nbsp;we&amp;nbsp;really&amp;nbsp;don't&amp;nbsp;know---,&amp;nbsp;I'm&amp;nbsp;always&amp;nbsp;surprised&amp;nbsp;to&amp;nbsp;see&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;that&amp;nbsp;even&amp;nbsp;the&amp;nbsp;Chinese&amp;nbsp;and&amp;nbsp;Japanese&amp;nbsp;and&amp;nbsp;Hindu&amp;nbsp;folks&amp;nbsp;adopted&amp;nbsp;``our&quot;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;numbers.&amp;nbsp;They&amp;nbsp;must&amp;nbsp;have&amp;nbsp;been&amp;nbsp;a&amp;nbsp;good&amp;nbsp;invention.&amp;nbsp;:)&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;Ishaaq&amp;nbsp;Chandy&amp;nbsp;schrieb:&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;We'll&amp;nbsp;just&amp;nbsp;have&amp;nbsp;to&amp;nbsp;agree&amp;nbsp;to&amp;nbsp;disagree&amp;nbsp;-&amp;nbsp;even&amp;nbsp;though&amp;nbsp;the&amp;nbsp;vast&amp;nbsp;majority&amp;nbsp;of&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;literature&amp;nbsp;on&amp;nbsp;the&amp;nbsp;topic&amp;nbsp;(including&amp;nbsp;the&amp;nbsp;Encyclopaedia&amp;nbsp;Britannica&amp;nbsp;-&amp;nbsp;which&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;you&amp;nbsp;were&amp;nbsp;so&amp;nbsp;quick&amp;nbsp;to&amp;nbsp;quote)&amp;nbsp;agree&amp;nbsp;with&amp;nbsp;what&amp;nbsp;I&amp;nbsp;said:&amp;nbsp;i.e.&amp;nbsp;the&amp;nbsp;decimal&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;number&amp;nbsp;system,&amp;nbsp;with&amp;nbsp;zero&amp;nbsp;as&amp;nbsp;a&amp;nbsp;place-holder&amp;nbsp;denoting&amp;nbsp;magnitude&amp;nbsp;was&amp;nbsp;an&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;Indian&amp;nbsp;invention.&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;...&amp;nbsp;and&amp;nbsp;yes&amp;nbsp;I&amp;nbsp;already&amp;nbsp;knew&amp;nbsp;the&amp;nbsp;word&amp;nbsp;&quot;Algebra&quot;&amp;nbsp;is&amp;nbsp;rooted&amp;nbsp;from&amp;nbsp;an&amp;nbsp;Arab&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;word&amp;nbsp;-&amp;nbsp;that&amp;nbsp;does&amp;nbsp;not&amp;nbsp;mean&amp;nbsp;they&amp;nbsp;invented&amp;nbsp;the&amp;nbsp;discipline&amp;nbsp;-&amp;nbsp;that&amp;nbsp;honour&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;belongs&amp;nbsp;to&amp;nbsp;the&amp;nbsp;ancient&amp;nbsp;Babylonians&amp;nbsp;(almost&amp;nbsp;4000&amp;nbsp;years&amp;nbsp;ago!)&amp;nbsp;-&amp;nbsp;refined&amp;nbsp;by&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;the&amp;nbsp;Greeks&amp;nbsp;and&amp;nbsp;the&amp;nbsp;Indians&amp;nbsp;before&amp;nbsp;the&amp;nbsp;Arabs&amp;nbsp;got&amp;nbsp;hold&amp;nbsp;of&amp;nbsp;it.&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;(http://en.wikipedia.org/wiki/Timeline_of_algebra)&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;I'm&amp;nbsp;not&amp;nbsp;belittling&amp;nbsp;the&amp;nbsp;myriad&amp;nbsp;achievements&amp;nbsp;of&amp;nbsp;the&amp;nbsp;Arabs&amp;nbsp;-&amp;nbsp;far&amp;nbsp;from&amp;nbsp;it,&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;they&amp;nbsp;were&amp;nbsp;essential&amp;nbsp;to&amp;nbsp;the&amp;nbsp;history&amp;nbsp;of&amp;nbsp;Mathematics,&amp;nbsp;but&amp;nbsp;please&amp;nbsp;don't&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;miss-attribute&amp;nbsp;stuff.&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;Ishaaq&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;PS&amp;nbsp;-&amp;nbsp;and&amp;nbsp;no,&amp;nbsp;modern&amp;nbsp;Indians&amp;nbsp;do&amp;nbsp;not&amp;nbsp;call&amp;nbsp;their&amp;nbsp;numerals&amp;nbsp;&quot;Arab&amp;nbsp;numerals&quot;,&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;I&amp;nbsp;know,&amp;nbsp;because&amp;nbsp;I&amp;nbsp;am&amp;nbsp;one&amp;nbsp;of&amp;nbsp;them&amp;nbsp;:)&amp;nbsp;&amp;nbsp;-&amp;nbsp;&quot;Arab&amp;nbsp;numerals&quot;&amp;nbsp;is&amp;nbsp;western&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;nomenclature.&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;2009/11/22&amp;nbsp;Moez&amp;nbsp;A.&amp;nbsp;Abdel-Gawad&amp;nbsp;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26473927&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;moez@...&lt;/a&gt;&amp;nbsp;&amp;lt;mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26473927&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;moez@...&lt;/a&gt;&amp;gt;&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Ishaaq,&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;You&amp;nbsp;wrote:&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;nbsp;Slightly&amp;nbsp;off&amp;nbsp;topic,&amp;nbsp;but&amp;nbsp;the&amp;nbsp;Arabs&amp;nbsp;got&amp;nbsp;the&amp;nbsp;concept&amp;nbsp;of&amp;nbsp;zero&amp;nbsp;from&amp;nbsp;the&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;nbsp;Indians&amp;nbsp;-&amp;nbsp;the&amp;nbsp;Arabs&amp;nbsp;then&amp;nbsp;introduced&amp;nbsp;it&amp;nbsp;to&amp;nbsp;the&amp;nbsp;western&amp;nbsp;world.&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;That&amp;nbsp;is&amp;nbsp;a&amp;nbsp;myth&amp;nbsp;that&amp;nbsp;is&amp;nbsp;trying&amp;nbsp;-&amp;nbsp;by&amp;nbsp;some&amp;nbsp;well-intentioned&amp;nbsp;people?&amp;nbsp;-&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;to&amp;nbsp;be&amp;nbsp;created/spread.&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Arabs&amp;nbsp;may&amp;nbsp;have&amp;nbsp;borrowed&amp;nbsp;other&amp;nbsp;digits&amp;nbsp;(ie,&amp;nbsp;their&amp;nbsp;shapes)&amp;nbsp;from&amp;nbsp;India&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(not&amp;nbsp;a&amp;nbsp;100%&amp;nbsp;sure&amp;nbsp;fact&amp;nbsp;either)&amp;nbsp;but&amp;nbsp;they&amp;nbsp;have&amp;nbsp;NOT&amp;nbsp;borrowed&amp;nbsp;0.&amp;nbsp;&amp;nbsp;They&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;invented&amp;nbsp;it,&amp;nbsp;because&amp;nbsp;they&amp;nbsp;were&amp;nbsp;the&amp;nbsp;center&amp;nbsp;of&amp;nbsp;scientific&amp;nbsp;research&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;then,&amp;nbsp;and&amp;nbsp;they&amp;nbsp;simply&amp;nbsp;needed&amp;nbsp;it.&amp;nbsp;Without&amp;nbsp;it,&amp;nbsp;math&amp;nbsp;-&amp;nbsp;as&amp;nbsp;they&amp;nbsp;had&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(possibly)&amp;nbsp;borrowed&amp;nbsp;it&amp;nbsp;from&amp;nbsp;the&amp;nbsp;Indians&amp;nbsp;-&amp;nbsp;would&amp;nbsp;make&amp;nbsp;much&amp;nbsp;less&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sense.&amp;nbsp;&amp;nbsp;That's&amp;nbsp;to&amp;nbsp;the&amp;nbsp;best&amp;nbsp;of&amp;nbsp;my&amp;nbsp;knowledge/research&amp;nbsp;on&amp;nbsp;this&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;off-topic&amp;nbsp;historical&amp;nbsp;point.&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Also,&amp;nbsp;note&amp;nbsp;that&amp;nbsp;even&amp;nbsp;*Indians*&amp;nbsp;of&amp;nbsp;today&amp;nbsp;do&amp;nbsp;call&amp;nbsp;numerals&amp;nbsp;we&amp;nbsp;use&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'Arabic&amp;nbsp;numerals',&amp;nbsp;because&amp;nbsp;they&amp;nbsp;-&amp;nbsp;digits&amp;nbsp;we/Arabs&amp;nbsp;-&amp;nbsp;use/used&amp;nbsp;*look&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;different*&amp;nbsp;from&amp;nbsp;ones&amp;nbsp;they&amp;nbsp;have/had&amp;nbsp;(check&amp;nbsp;TUG&amp;nbsp;India&amp;nbsp;and&amp;nbsp;their&amp;nbsp;TeX&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Tutorial,&amp;nbsp;for&amp;nbsp;example).&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Finally,&amp;nbsp;you&amp;nbsp;may&amp;nbsp;also&amp;nbsp;like&amp;nbsp;to&amp;nbsp;check&amp;nbsp;the&amp;nbsp;'Islamic&amp;nbsp;Mathematics'&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;article,&amp;nbsp;on&amp;nbsp;Encyclopedia&amp;nbsp;Britannica&amp;nbsp;(despite&amp;nbsp;some&amp;nbsp;of&amp;nbsp;its&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;misinformation&amp;nbsp;about&amp;nbsp;Islam),&amp;nbsp;for&amp;nbsp;getting&amp;nbsp;more&amp;nbsp;info&amp;nbsp;about&amp;nbsp;the&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;numerous&amp;nbsp;contributions&amp;nbsp;made&amp;nbsp;by&amp;nbsp;Arabs&amp;nbsp;and&amp;nbsp;Muslims&amp;nbsp;to&amp;nbsp;the&amp;nbsp;fundamentals&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;of&amp;nbsp;Mathematics&amp;nbsp;(should&amp;nbsp;I&amp;nbsp;mention&amp;nbsp;where&amp;nbsp;the&amp;nbsp;word&amp;nbsp;'Algebra'&amp;nbsp;came&amp;nbsp;from?).&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Now...&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Tony,&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Are&amp;nbsp;your&amp;nbsp;responses&amp;nbsp;an&amp;nbsp;attempt&amp;nbsp;to&amp;nbsp;let&amp;nbsp;ignorance&amp;nbsp;-&amp;nbsp;or&amp;nbsp;misinformation&amp;nbsp;-&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;reign,&amp;nbsp;among&amp;nbsp;Scala&amp;nbsp;users??&amp;nbsp;&amp;nbsp;I&amp;nbsp;hope&amp;nbsp;not.&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;I've&amp;nbsp;*studied*&amp;nbsp;Peirce's&amp;nbsp;TAPL&amp;nbsp;(as&amp;nbsp;it&amp;nbsp;is&amp;nbsp;commonly&amp;nbsp;abbreviated),&amp;nbsp;years&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ago!&amp;nbsp;It&amp;nbsp;is&amp;nbsp;not&amp;nbsp;The&amp;nbsp;Qur'an,&amp;nbsp;or&amp;nbsp;a&amp;nbsp;Bible,&amp;nbsp;that&amp;nbsp;has&amp;nbsp;to&amp;nbsp;believed&amp;nbsp;in&amp;nbsp;its&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;totality,&amp;nbsp;and&amp;nbsp;without&amp;nbsp;questioning.&amp;nbsp;&amp;nbsp;TAPL&amp;nbsp;has&amp;nbsp;some&amp;nbsp;fundamental&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;criticisms&amp;nbsp;against&amp;nbsp;it.&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Relevant&amp;nbsp;to&amp;nbsp;our&amp;nbsp;discussion&amp;nbsp;is&amp;nbsp;the&amp;nbsp;fact/criticism&amp;nbsp;that&amp;nbsp;TAPL&amp;nbsp;is&amp;nbsp;too&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;syntactic,&amp;nbsp;and&amp;nbsp;rarely&amp;nbsp;discusses&amp;nbsp;(mathematical)&amp;nbsp;semantics.&amp;nbsp;Saying&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this,&amp;nbsp;I&amp;nbsp;also&amp;nbsp;recognize&amp;nbsp;it&amp;nbsp;is&amp;nbsp;VERY&amp;nbsp;HARD&amp;nbsp;for&amp;nbsp;people&amp;nbsp;who&amp;nbsp;are&amp;nbsp;not&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;familiar&amp;nbsp;much&amp;nbsp;with&amp;nbsp;PL&amp;nbsp;semantics&amp;nbsp;(particularly&amp;nbsp;Domain&amp;nbsp;Theory,&amp;nbsp;and&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;denotational&amp;nbsp;semantics)&amp;nbsp;to&amp;nbsp;realize&amp;nbsp;TAPL's&amp;nbsp;&quot;syntactic-ness&quot;.&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;I&amp;nbsp;thus&amp;nbsp;suggest&amp;nbsp;YOU&amp;nbsp;first&amp;nbsp;read&amp;nbsp;more,&amp;nbsp;in&amp;nbsp;PL&amp;nbsp;semantics,&amp;nbsp;particularly&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Dana&amp;nbsp;Scott&amp;nbsp;seminal&amp;nbsp;work&amp;nbsp;(for&amp;nbsp;which&amp;nbsp;he&amp;nbsp;was&amp;nbsp;awarded&amp;nbsp;the&amp;nbsp;Turing&amp;nbsp;Award&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[the&amp;nbsp;&quot;Nobel&amp;nbsp;Prize&quot;&amp;nbsp;of&amp;nbsp;CS],&amp;nbsp;and&amp;nbsp;Gordon&amp;nbsp;Plotkin&amp;nbsp;and&amp;nbsp;Cardelli's&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;important&amp;nbsp;work&amp;nbsp;on&amp;nbsp;PL&amp;nbsp;semantics,&amp;nbsp;before&amp;nbsp;talking&amp;nbsp;about&amp;nbsp;_|_&amp;nbsp;(and&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wrongly&amp;nbsp;associating&amp;nbsp;it&amp;nbsp;with&amp;nbsp;'null').&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;And&amp;nbsp;please&amp;nbsp;remember:&amp;nbsp;I&amp;nbsp;was&amp;nbsp;once&amp;nbsp;-&amp;nbsp;at&amp;nbsp;the&amp;nbsp;time&amp;nbsp;of&amp;nbsp;that&amp;nbsp;discussion&amp;nbsp;I&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;had&amp;nbsp;with&amp;nbsp;Corky&amp;nbsp;-&amp;nbsp;in&amp;nbsp;your&amp;nbsp;shoes.&amp;nbsp;&amp;nbsp;Corky&amp;nbsp;then&amp;nbsp;helped&amp;nbsp;me,&amp;nbsp;a&amp;nbsp;lot,&amp;nbsp;to&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;realize&amp;nbsp;the&amp;nbsp;distinction&amp;nbsp;you&amp;nbsp;are&amp;nbsp;now&amp;nbsp;still&amp;nbsp;unable&amp;nbsp;to&amp;nbsp;make.&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;So,&amp;nbsp;finally,&amp;nbsp;please&amp;nbsp;be&amp;nbsp;careful&amp;nbsp;before&amp;nbsp;you&amp;nbsp;talk,&amp;nbsp;specially&amp;nbsp;on&amp;nbsp;a&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailing&amp;nbsp;list&amp;nbsp;with&amp;nbsp;so&amp;nbsp;many&amp;nbsp;members.&amp;nbsp;&amp;nbsp;It&amp;nbsp;is&amp;nbsp;only&amp;nbsp;because&amp;nbsp;I&amp;nbsp;am&amp;nbsp;sure&amp;nbsp;of&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;main&amp;nbsp;premises,&amp;nbsp;backed&amp;nbsp;by&amp;nbsp;Corky's&amp;nbsp;opinion,&amp;nbsp;that&amp;nbsp;I&amp;nbsp;sent&amp;nbsp;to&amp;nbsp;this&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailing&amp;nbsp;list&amp;nbsp;(I&amp;nbsp;usually&amp;nbsp;do&amp;nbsp;not&amp;nbsp;follow&amp;nbsp;it/send&amp;nbsp;to&amp;nbsp;it&amp;nbsp;much).&amp;nbsp;&amp;nbsp;I&amp;nbsp;-&amp;nbsp;and&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;you?&amp;nbsp;-&amp;nbsp;should&amp;nbsp;not&amp;nbsp;want&amp;nbsp;to&amp;nbsp;MISGUIDE&amp;nbsp;the&amp;nbsp;nice&amp;nbsp;people&amp;nbsp;on&amp;nbsp;this&amp;nbsp;list&amp;nbsp;who&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;are&amp;nbsp;looking&amp;nbsp;for&amp;nbsp;sure&amp;nbsp;and&amp;nbsp;true&amp;nbsp;information,&amp;nbsp;right?&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-Moez&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PS:&amp;nbsp;For&amp;nbsp;the&amp;nbsp;one&amp;nbsp;who&amp;nbsp;asked&amp;nbsp;how&amp;nbsp;can&amp;nbsp;the&amp;nbsp;(simple)&amp;nbsp;program&amp;nbsp;that&amp;nbsp;squares&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;its&amp;nbsp;input&amp;nbsp;non-terminate,&amp;nbsp;I&amp;nbsp;think&amp;nbsp;you&amp;nbsp;missed&amp;nbsp;my&amp;nbsp;point&amp;nbsp;(I&amp;nbsp;also&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;suggest,&amp;nbsp;if&amp;nbsp;possible,&amp;nbsp;studying&amp;nbsp;semantics).&amp;nbsp;My&amp;nbsp;point&amp;nbsp;is&amp;nbsp;a&amp;nbsp;GENERAL&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;one,&amp;nbsp;about&amp;nbsp;all&amp;nbsp;possible&amp;nbsp;computations,&amp;nbsp;not&amp;nbsp;a&amp;nbsp;(your)&amp;nbsp;specific&amp;nbsp;one.&amp;nbsp;My&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;point&amp;nbsp;is&amp;nbsp;that&amp;nbsp;if&amp;nbsp;you&amp;nbsp;want&amp;nbsp;ANY&amp;nbsp;programming&amp;nbsp;language&amp;nbsp;to&amp;nbsp;be&amp;nbsp;*useful*&amp;nbsp;it&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HAS&amp;nbsp;to&amp;nbsp;allow&amp;nbsp;the&amp;nbsp;possibility&amp;nbsp;of&amp;nbsp;non-termination.&amp;nbsp;&amp;nbsp;That&amp;nbsp;is&amp;nbsp;a&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;consequence&amp;nbsp;of&amp;nbsp;the&amp;nbsp;halting-problem&amp;nbsp;&amp;amp;&amp;nbsp;the&amp;nbsp;Church-Turing&amp;nbsp;thesis,&amp;nbsp;if&amp;nbsp;I&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;recall&amp;nbsp;correctly&amp;nbsp;and&amp;nbsp;properly&amp;nbsp;understand&amp;nbsp;them.&amp;nbsp;&amp;nbsp;Non-termination&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&quot;giving&amp;nbsp;an&amp;nbsp;answer,&amp;nbsp;but&amp;nbsp;at&amp;nbsp;time&amp;nbsp;infinity!&quot;)&amp;nbsp;ALWAYS&amp;nbsp;has&amp;nbsp;to&amp;nbsp;be&amp;nbsp;in&amp;nbsp;our&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(programmers')&amp;nbsp;minds&amp;nbsp;if&amp;nbsp;we&amp;nbsp;want&amp;nbsp;to&amp;nbsp;write&amp;nbsp;any&amp;nbsp;useful&amp;nbsp;general&amp;nbsp;software&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(as&amp;nbsp;defined&amp;nbsp;by&amp;nbsp;Church's&amp;nbsp;lambda&amp;nbsp;calculus&amp;nbsp;and&amp;nbsp;Turing's&amp;nbsp;Turing&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;machines).&amp;nbsp;&amp;nbsp;My&amp;nbsp;point&amp;nbsp;is,&amp;nbsp;thus,&amp;nbsp;sort&amp;nbsp;of&amp;nbsp;a&amp;nbsp;&quot;meta&quot;-statement,&amp;nbsp;about&amp;nbsp;all&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;useful&amp;nbsp;programs&amp;nbsp;we&amp;nbsp;can&amp;nbsp;write,&amp;nbsp;not&amp;nbsp;a&amp;nbsp;statement/point&amp;nbsp;about&amp;nbsp;a&amp;nbsp;specific&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;program.&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PS2:&amp;nbsp;Even&amp;nbsp;though&amp;nbsp;I&amp;nbsp;find&amp;nbsp;it&amp;nbsp;exciting,&amp;nbsp;I&amp;nbsp;apologize&amp;nbsp;if&amp;nbsp;I&amp;nbsp;may&amp;nbsp;not&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;continue&amp;nbsp;this&amp;nbsp;discussion&amp;nbsp;further.&amp;nbsp;I&amp;nbsp;have&amp;nbsp;too&amp;nbsp;much&amp;nbsp;other&amp;nbsp;stuff&amp;nbsp;on&amp;nbsp;my&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;plate&amp;nbsp;that&amp;nbsp;needs&amp;nbsp;my&amp;nbsp;immediate&amp;nbsp;attention&amp;nbsp;and&amp;nbsp;time.&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Tony&amp;nbsp;Morris&amp;nbsp;wrote:&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;nbsp;I&amp;nbsp;strongly&amp;nbsp;recommend&amp;nbsp;Types&amp;nbsp;and&amp;nbsp;Programming&amp;nbsp;Languages&amp;nbsp;by&amp;nbsp;Benjamin&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Pierce.&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;nbsp;Tony&amp;nbsp;Morris&amp;nbsp;wrote:&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;Moez&amp;nbsp;A.&amp;nbsp;Abdel-Gawad&amp;nbsp;wrote:&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;Tony&amp;nbsp;Morris&amp;nbsp;wrote:&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;0&amp;nbsp;exists.&amp;nbsp;null&amp;nbsp;represents&amp;nbsp;&quot;that&amp;nbsp;which&amp;nbsp;does&amp;nbsp;not&amp;nbsp;exist.&quot;&amp;nbsp;In&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;computational&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;theory,&amp;nbsp;what&amp;nbsp;null&amp;nbsp;represents&amp;nbsp;is&amp;nbsp;more&amp;nbsp;commonly&amp;nbsp;called&amp;nbsp;bottom,&amp;nbsp;_|_,&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;undefined,&amp;nbsp;non-terminating&amp;nbsp;computation,&amp;nbsp;logical&amp;nbsp;absurdity.&amp;nbsp;In&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;philosophy&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;it&amp;nbsp;is&amp;nbsp;sometimes&amp;nbsp;called&amp;nbsp;&quot;not&amp;nbsp;even&amp;nbsp;false.&quot;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;That's&amp;nbsp;not&amp;nbsp;true.&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;Me&amp;nbsp;and&amp;nbsp;Corky&amp;nbsp;(Prof.&amp;nbsp;Robert&amp;nbsp;Cartwright,&amp;nbsp;my&amp;nbsp;PhD&amp;nbsp;advisor)&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;discussed&amp;nbsp;this&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;once&amp;nbsp;while&amp;nbsp;discussing&amp;nbsp;Domain&amp;nbsp;Theory&amp;nbsp;(the&amp;nbsp;&quot;Math&amp;nbsp;of&amp;nbsp;Computing&quot;,&amp;nbsp;upon&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;which&amp;nbsp;my&amp;nbsp;PhD&amp;nbsp;thesis&amp;nbsp;is&amp;nbsp;based).&amp;nbsp;&amp;nbsp;We&amp;nbsp;reached&amp;nbsp;the&amp;nbsp;conclusion&amp;nbsp;that&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;non-termination&amp;nbsp;is&amp;nbsp;just,&amp;nbsp;well,&amp;nbsp;non-termination.&amp;nbsp;It&amp;nbsp;can&amp;nbsp;NOT&amp;nbsp;be&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;eliminated&amp;nbsp;from&amp;nbsp;computation.&amp;nbsp;&amp;nbsp;Null,&amp;nbsp;on&amp;nbsp;the&amp;nbsp;other&amp;nbsp;hand&amp;nbsp;*exists*,&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;as&amp;nbsp;a&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;genuine&amp;nbsp;real&amp;nbsp;but&amp;nbsp;unusual/&amp;nbsp;exceptional/&amp;nbsp;unexpected&amp;nbsp;value.&amp;nbsp;&amp;nbsp;It&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;should,&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;formally&amp;nbsp;speaking,&amp;nbsp;be&amp;nbsp;added&amp;nbsp;to&amp;nbsp;each&amp;nbsp;type&amp;nbsp;that&amp;nbsp;needs&amp;nbsp;one&amp;nbsp;such&amp;nbsp;value&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;(some&amp;nbsp;don't),&amp;nbsp;or&amp;nbsp;forced&amp;nbsp;on&amp;nbsp;them&amp;nbsp;by&amp;nbsp;belonging&amp;nbsp;to&amp;nbsp;a&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;(non-expressible-in-Java)&amp;nbsp;'NullType'&amp;nbsp;that&amp;nbsp;is&amp;nbsp;a&amp;nbsp;subtype&amp;nbsp;(based&amp;nbsp;on&amp;nbsp;a&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;subclass)&amp;nbsp;of&amp;nbsp;all&amp;nbsp;types&amp;nbsp;(classes).&amp;nbsp;'null'&amp;nbsp;-&amp;nbsp;just&amp;nbsp;like&amp;nbsp;all&amp;nbsp;regular&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;values&amp;nbsp;-&amp;nbsp;can&amp;nbsp;be&amp;nbsp;got&amp;nbsp;ridden&amp;nbsp;of&amp;nbsp;(is&amp;nbsp;not&amp;nbsp;absolutely&amp;nbsp;essential).&amp;nbsp;&amp;nbsp;_|_&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;(bottom)/non-termination&amp;nbsp;is&amp;nbsp;absolutely&amp;nbsp;essential&amp;nbsp;to&amp;nbsp;the&amp;nbsp;nature&amp;nbsp;of&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;computation,&amp;nbsp;and&amp;nbsp;cannot&amp;nbsp;be&amp;nbsp;got&amp;nbsp;ridden&amp;nbsp;of.&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;It's&amp;nbsp;true.&amp;nbsp;You&amp;nbsp;may&amp;nbsp;not&amp;nbsp;realise&amp;nbsp;it&amp;nbsp;but&amp;nbsp;you&amp;nbsp;contradicted&amp;nbsp;yourself.&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;Non-termination&amp;nbsp;must&amp;nbsp;exist&amp;nbsp;in&amp;nbsp;Scala,&amp;nbsp;therefore,&amp;nbsp;it&amp;nbsp;must&amp;nbsp;be&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;represented.&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;You&amp;nbsp;said&amp;nbsp;this&amp;nbsp;yourself.&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;Pattern&amp;nbsp;matching&amp;nbsp;will&amp;nbsp;never&amp;nbsp;be&amp;nbsp;exhaustive,&amp;nbsp;the&amp;nbsp;error&amp;nbsp;function&amp;nbsp;is&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;of&amp;nbsp;type&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;forall&amp;nbsp;A.&amp;nbsp;A&amp;nbsp;(which&amp;nbsp;is&amp;nbsp;a&amp;nbsp;LIE!),&amp;nbsp;and&amp;nbsp;(wait&amp;nbsp;for&amp;nbsp;it)&amp;nbsp;null&amp;nbsp;exists.&amp;nbsp;Null&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;represents&amp;nbsp;that&amp;nbsp;which&amp;nbsp;does&amp;nbsp;not&amp;nbsp;exist&amp;nbsp;and&amp;nbsp;that&amp;nbsp;is&amp;nbsp;the&amp;nbsp;extent&amp;nbsp;of&amp;nbsp;its&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;existence.&amp;nbsp;In&amp;nbsp;a&amp;nbsp;language&amp;nbsp;with&amp;nbsp;different&amp;nbsp;syntax,&amp;nbsp;you&amp;nbsp;might&amp;nbsp;consider&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;calling&amp;nbsp;it&amp;nbsp;_|_.&amp;nbsp;The&amp;nbsp;null&amp;nbsp;value&amp;nbsp;is&amp;nbsp;a&amp;nbsp;value&amp;nbsp;has&amp;nbsp;the&amp;nbsp;type&amp;nbsp;forall&amp;nbsp;A.&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;A.&amp;nbsp;This&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;is&amp;nbsp;not&amp;nbsp;a&amp;nbsp;theorem.&amp;nbsp;It&amp;nbsp;represents&amp;nbsp;bottom,&amp;nbsp;non-termination,&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;undefinedness,&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;logical&amp;nbsp;absurdity.&amp;nbsp;That&amp;nbsp;is&amp;nbsp;what&amp;nbsp;null&amp;nbsp;is.&amp;nbsp;I&amp;nbsp;recommend&amp;nbsp;you&amp;nbsp;try&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;again&amp;nbsp;with&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;Corky.&amp;nbsp;You&amp;nbsp;buggered&amp;nbsp;up.&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;Philip&amp;nbsp;Köster&amp;nbsp;wrote:&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;Discovering&amp;nbsp;the&amp;nbsp;`0'&amp;nbsp;was&amp;nbsp;what&amp;nbsp;separated&amp;nbsp;the&amp;nbsp;Arabians&amp;nbsp;from&amp;nbsp;the&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Romans.&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;'Arabs',&amp;nbsp;you&amp;nbsp;mean.&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;One&amp;nbsp;day&amp;nbsp;we&amp;nbsp;used&amp;nbsp;to&amp;nbsp;teach&amp;nbsp;the&amp;nbsp;world.&amp;nbsp;&amp;nbsp;We&amp;nbsp;hope&amp;nbsp;one&amp;nbsp;day&amp;nbsp;soon&amp;nbsp;we&amp;nbsp;would&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;again!&amp;nbsp;&amp;nbsp;:)&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;-Moez&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;
&lt;br /&gt; </content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Cost-of-Option---Some-vs-null-tp26438395p26473927.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26473454</id>
	<title>Re: Re: Nesting alternative parser combinators</title>
	<published>2009-11-22T22:49:33Z</published>
	<updated>2009-11-22T22:49:33Z</updated>
	<author>
		<name>Pavol Vaskovic</name>
	</author>
	<content type="html">Hi Tony,&lt;br&gt;&lt;br&gt;Thank you very much for explanation. Now I understand.&lt;br&gt;&lt;br&gt;I have encountered the same problem before, but did not realize, it is the same problem. By same problem, I mean the parser itself succeeds, but the parseAll fails due to remaining unparsed input. The error message was then &amp;quot;`\z&amp;#39; expected but ...&amp;quot; which pointed me to look up in the combination tree, because I had no `\z&amp;#39; in my part of the grammar. &lt;br&gt;
&lt;br&gt;Now it did not occur to me, that &amp;#39;Y&amp;#39; was succeeding, I was expecting the `\z&amp;#39; message for that case. I guess this is another instance of [scala-user] Confusing parsing combinator errors.&lt;br&gt;&lt;br&gt;The way how parseAll chooses the error to report does not make sense to me. I see no correlation between the reported failure of an unsuccessful parser that &lt;br&gt;
consumed most of the input before failing and the real error in this case - expected end of input (`\z&amp;#39;), but `-&amp;#39; found. In effect, it is choosing arbitrary previous error message, that hides the true nature of the problem - the topmost user-defined parser _succeeded_, but there was input still left.&lt;br&gt;
&lt;br&gt;Regards&lt;br&gt;Pavol Vaskovic&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Mon, Nov 23, 2009 at 5:16 AM, Tony Sloane &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26473454&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;inkytonik@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
&lt;div style=&quot;word-wrap: break-word;&quot;&gt;Hi Pavol,&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;BNF semantics is not quite right for this kind of parser.  Significant&lt;/div&gt;&lt;div&gt;differences are that alternative order and backtracking behaviour&lt;/div&gt;&lt;div&gt;
matter for the alternation combinator but are not really defined for&lt;/div&gt;&lt;div&gt;BNF.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;It appears to me that your pY parser works because phrase(X) cannot&lt;/div&gt;&lt;div&gt;succeed (since it doesn&amp;#39;t consume all of the input).  Hence the second&lt;/div&gt;
&lt;div&gt;alternative of pY is chosen and succeeds.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;For the Y variant, X actually succeeds since a prefix of the input is&lt;/div&gt;&lt;div&gt;&amp;quot;K&amp;quot;, which is a KD, which is an X.  Hence Y succeeds.  But the next &lt;/div&gt;
&lt;div&gt;level up (parseAll (Y, ...)) doesn&amp;#39;t succeed, since some of the input &lt;/div&gt;&lt;div&gt;has not been consumed.  It is too late to backtrack into the second&lt;/div&gt;&lt;div&gt;alternative of Y at that point though, since Y has already succeeded.&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I think the error you are seeing:&lt;/div&gt;&lt;div class=&quot;im&quot;&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote type=&quot;cite&quot;&gt;[1.3] failure: `D&amp;#39; expected but `O&amp;#39; found&lt;br&gt;&lt;br&gt;K-O#1&lt;br&gt;  ^&lt;br&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;is reported because the phrase combinator (used by parseAll) reports&lt;/div&gt;&lt;div&gt;the last unsuccessful parse (see lastNoSuccess var in Parsers class),&lt;/div&gt;&lt;div&gt;where &amp;quot;last&amp;quot; refers to latest in the input.  This makes sense because&lt;/div&gt;
&lt;div&gt;that error is the likely cause of the parser not consuming the entire&lt;/div&gt;&lt;div&gt;input.  In your case, the most recent unsuccessful parse is the&lt;/div&gt;&lt;div&gt;failure in the K ~ (&amp;quot;-&amp;quot; ~&amp;gt; D) alternative of KD on the D, hence the&lt;/div&gt;
&lt;div&gt;error. (There is also a failure in the KD ~ (&amp;quot;#&amp;quot; ~&amp;gt; num) alternative&lt;/div&gt;&lt;div&gt;of X that happens later in time but at an earlier position in the&lt;/div&gt;&lt;div&gt;input (on the &amp;quot;-&amp;quot;, expecting a &amp;quot;#&amp;quot;), so it is not preferred.)&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Whew!  This stuff can be tricky to reason about, but I hope this helps&lt;/div&gt;&lt;div&gt;clarify what is going on.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;cheers,&lt;/div&gt;&lt;div&gt;Tony&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;h5&quot;&gt;&lt;div&gt;&lt;br&gt;
&lt;div&gt;&lt;div&gt;On 23/11/2009, at 11:54 AM, Pavol Vaskovic wrote:&lt;/div&gt;&lt;br&gt;&lt;blockquote type=&quot;cite&quot;&gt;I&amp;#39;ve removed the partial function applications from the test case, because they were not affecting the results. This is even simpler demonstration of behavior I can not explain:&lt;br&gt;
&lt;br&gt;object Test extends util.parsing.combinator.RegexParsers {&lt;br&gt;
  override val whiteSpace = &amp;quot;&amp;quot;.r&lt;br&gt;&lt;br&gt;  def letter = &amp;quot;[A-Z]&amp;quot;.r&lt;br&gt;  def lettersAndDash = &amp;quot;[-A-Z]+&amp;quot;.r&lt;br&gt;  def num = &amp;quot;[1-9]&amp;quot;.r&lt;br&gt;&lt;br&gt;  def pY = phrase(X) | lettersAndDash ~ (&amp;quot;#&amp;quot; ~&amp;gt; num)&lt;br&gt;

  def Y = X | lettersAndDash ~ (&amp;quot;#&amp;quot; ~&amp;gt; num)&lt;br&gt;&lt;br&gt;  def X = KD ~ (&amp;quot;#&amp;quot; ~&amp;gt; num) | KD&lt;br&gt;&lt;br&gt;  def KD = K ~ (&amp;quot;-&amp;quot; ~&amp;gt; D) | K&lt;br&gt;&lt;br&gt;  def K = &amp;quot;K&amp;quot;&lt;br&gt;  def D = &amp;quot;D&amp;quot;&lt;br&gt;

&lt;br&gt;  def main(args: Array[String]) {&lt;br&gt;    println(parseAll(Y, &amp;quot;K-O#1&amp;quot;))&lt;br&gt;    println(parseAll(pY, &amp;quot;K-O#1&amp;quot;))&lt;br&gt;  }&lt;br&gt;}&lt;br&gt;&lt;br&gt;Why am I getting the following?&lt;br&gt;[1.3] failure: `D&amp;#39; expected but `O&amp;#39; found&lt;br&gt;

&lt;br&gt;K-O#1&lt;br&gt;  ^&lt;br&gt;[1.6] parsed: (K-O~1)&lt;br&gt;&lt;br&gt;Nesting alternatives third time, triggers the failure. &lt;br&gt;(Commenting out &amp;quot;| KD&amp;quot; in def X or &amp;quot;| K&amp;quot; in def KD causes the Y to parse with &amp;quot; | lettersAndDash ~ (&amp;quot;#&amp;quot; ~&amp;gt; num)&amp;quot;.) Why exactly does wrapping the X in phrase make this case work?&lt;br&gt;

&lt;br&gt;This seems like a dangerous pitfall, when using parser combinators naively (assuming EBNF semantics), as I do. &lt;br&gt;Why does it behave like this? Why doesn&amp;#39;t &amp;quot;b ~ c | b&amp;quot; behave same as &amp;quot;b ~ opt(c)&amp;quot;?&lt;br&gt;

Thanks in advance for bringing some light on this issue.&lt;br&gt;&lt;br&gt;Regards&lt;br&gt;Pavol Vaskovic&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Thu, Nov 19, 2009 at 2:05 PM, Pavol Vaskovic &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26473454&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;pali@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;

&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;I&amp;#39;m parsing addresses in semi-structured format. I&amp;#39;ve created a grammar that behaves strange, and I am unable to explain what is going on.&lt;br&gt;


&lt;br&gt;
I have been avoiding the use of opt method for wrapping optional parts of grammar, because it complicated the return signatures too much. Instead I was using alternative composition with longer variant first.&lt;br&gt;
&lt;br&gt;
Instead of:&lt;br&gt;
def a = b ~ opt(c)&lt;br&gt;
&lt;br&gt;
I&amp;#39;m using:&lt;br&gt;
def a = b ~ c | b&lt;br&gt;
&lt;br&gt;
When I nest such rules, they start to behave surprisingly - seems like the alternatives are never tried.&lt;br&gt;&lt;/blockquote&gt;&lt;/div&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Nesting-alternative-parser-combinators-tp26425909p26473454.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26473142</id>
	<title>Re: Java Parser in Scala avalable ?</title>
	<published>2009-11-22T21:52:01Z</published>
	<updated>2009-11-22T21:52:01Z</updated>
	<author>
		<name>Russel Winder-4</name>
	</author>
	<content type="html">Manohar,
&lt;br&gt;&lt;br&gt;On Sun, 2009-11-22 at 17:07 -0800, Manohar Jonnalagedda wrote:
&lt;div class='shrinkable-quote'&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hello all,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I am working in a project where I would be needing to analyse Java
&lt;br&gt;&amp;gt; code, and have therefore started to work on a parser for Java. The
&lt;br&gt;&amp;gt; size of the grammar being immense however, before going deeper, I was
&lt;br&gt;&amp;gt; wondering if anyone had attempted a similar (futile ?) feat, and if
&lt;br&gt;&amp;gt; there was some code available in the public domain I could find ?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Thanks,
&lt;br&gt;&amp;gt; Manohar
&lt;/div&gt;&lt;/div&gt;As Mohamed Bana suggested, if you are working using Eclipse, there is
&lt;br&gt;the Eclipse compiler which can be used programmatically.
&lt;br&gt;&lt;br&gt;There is also the compiler in OpenJDK which could be used.
&lt;br&gt;&lt;br&gt;Another alternative is that the Groovy project has an Antlr grammar for
&lt;br&gt;Java as well as one for Groovy.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Russel.
&lt;br&gt;=============================================================================
&lt;br&gt;Dr Russel Winder &amp;nbsp; &amp;nbsp; &amp;nbsp;Partner
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; xmpp: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26473142&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;russel@...&lt;/a&gt;
&lt;br&gt;Concertant LLP &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;t: +44 20 7585 2200, +44 20 7193 9203
&lt;br&gt;41 Buckmaster Road, &amp;nbsp; f: +44 8700 516 084 &amp;nbsp; voip: sip:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26473142&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;russel.winder@...&lt;/a&gt;
&lt;br&gt;London SW11 1EN, UK &amp;nbsp; m: +44 7770 465 077 &amp;nbsp; skype: russel_winder
&lt;br&gt;&lt;br /&gt; &lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;signature.asc&lt;/strong&gt; (204 bytes) &lt;a href=&quot;http://old.nabble.com/attachment/26473142/0/signature.asc&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Java-Parser-in-Scala-avalable---tp26471406p26473142.html" />
</entry>

</feed>
