[Newbies] Re: Block evaluation

Jerome Peace peace_the_dreamer at yahoo.com
Tue Dec 19 03:19:05 UTC 2006


Block evaluation 

Hi Ulli,

I tried your code out in a workspace. 
Here is what I discovered.

The original:

| x y z |
x:= [ y:=1. z:=2. x+y. ] .  x value.  
{[y := 1.  x := 2]  } .


Ah this is a cool bug.

As you probably know, 
"[ anything ]" is an object called a block context 
x:= [ anything ] . x value .
will print the value of "anything" in this case "nil"
since we have not defined it.

There is a typo (I believe) in your second line. I am
guessing you wanted to write.
x:= [ y:=1. z:=2. z+y. ] . x value. 
which gives the result 3.
as it stands you are trying to add a number to a block
context which gives a DNU.

The last line is also interesting 
Try
{ y:= 1 . z := 2 } 
ans: " #(1 2)"

or
{[y := 1.  x := 2] value }" ans: #(2)"

or
{[y := 1.  x := 2]  } first value " 2"


The square brackets are causing the evaluation of "y
:= 1.  x := 2"
to be delayed until later. The thing that prints out
what is going on it being more cryptic than it needs
to be by not printing the contents of the block
context which you would have more immediately
recognized.

hth. 

Yours in service, -- Jerome Peace









__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


More information about the Beginners mailing list