Russ Abbott wrote:
CTM certainly does make the point. I'm arguing that this is so central to Oz that the point should be made more forcefully and more visibly. It's probably one of the most important points to make to programmers who are trying to learn Oz.

If you read the book in the left-to-right direction, that should be clear when you go through Chapter 4 ;-)

I've added a section on Data Flow Variables to the page on what programmers should know about Oz: http://cs.calstatela.edu/~wiki/index.php/Courses/CS_460/Fall_2005/What_programmers_should_know_about_Oz#Data_flow_variables

I was shocked when I started to read that section! The first example is almost a COUNTEREXAMPLE of a good usage of dataflow variables! You should insist on the fact that dataflow variables allow both CONCURRENCY and DECLARATIVITY at the same time. The alternative implementation of PredSucc shows that very well.

About the note below. You seem to misunderstand threads. Concurrent threads do implement a *conjunction* of statements! This is because they share the same memory. The resulting memory store is the conjunction of the constraints told by all threads.

The 'or' construct explicitly create several concurrent computations which do *not* share the same memory. 'or' actually create subspaces, that have their own view of the computation. Therefore 'or' is a real implementation of a *disjunction*. A statement 'or' blocks until all subcomputations fail except one; that one then becomes the main computation.


Cheers,
raph


_________________________________________________________________________________
mozart-users mailing list                               
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users

Reply via email to