Dear Wacek,

as far as I remember (haven't found the relevant docs right now), declare starts a compilation unit, and multiple compilation units are executed concurrently by default. So, the order in which they are executed is indetermined in your example.

Rule of thumb: don't use multiple instances of declare in a single code feed ;-)

Best
Torsten

On Sep 12, 2007, at 10:21 AM, Wacek Kusnierczyk wrote:
Hi,

I observe unexpected behaviour when running a simple piece of code.
Consider this programlet:

declare
V = 'stop'
proc {P} {Browse V} end
local V='start' in {Browse V} {P} end
{P}

This displays start, stop, stop, in this order, as expected.
The funnyart is when the code is modified as follows:


declare
V = 'stop'
proc {P} {Browse V} end
local V='start' in {Browse V} {P} end
declare
V = 'whatever else'
{P}

Here, on the first run stop, start, stop is displayed, but on any
subsequent run the order is again as above, as expected.  On the first
run, the last Browse is the first to actually display -- why?  (To see
that, redefine P to, e.g., proc {P Q} {Browse P#Q} end and call P with
different values on each occasion.)

(Mozart 1.3.2, Fedora)

vQ

______________________________________________________________________ ___________ mozart-users mailing list mozart- [EMAIL PROTECTED]
http://www.mozart-oz.org/mailman/listinfo/mozart-users

--
Torsten Anders
Interdisciplinary Centre for Computer Music Research
University of Plymouth
http://strasheela.sourceforge.net
http://www.torsten-anders.de


_________________________________________________________________________________
mozart-users mailing list                               
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users
  • Browse Wacek Kusnierczyk
    • Re: Browse Torsten Anders

Reply via email to