--* From postmaster%watson.vnet.ibm.com@yktvmv.watson.ibm.com  Tue Aug  3 12:14:49 1993
--* Received: from yktvmv2.watson.ibm.com by radical.watson.ibm.com (AIX 3.2/UCB 5.64/900524)
--*           id AA25480; Tue, 3 Aug 1993 12:14:49 -0400
--* X-External-Networks: yes
--* Received: from watson.vnet.ibm.com by yktvmv.watson.ibm.com (IBM VM SMTP V2R3)
--*    with BSMTP id 9401; Wed, 28 Jul 93 16:53:15 EDT
--* Received: from YKTVMV by watson.vnet.ibm.com with "VAGENT.V1.0"
--*           id <A.SANTAS.NOTE.YKTVMV.4743.Jul.28.16:53:14.-0400>
--*           for asbugs@watson; Wed, 28 Jul 93 16:53:15 -0400
--* Received: from bernina.ethz.ch by watson.ibm.com (IBM VM SMTP V2R3) with TCP;
--*    Wed, 28 Jul 93 16:53:13 EDT
--* Received: from neptune by bernina.ethz.ch with SMTP inbound id <3330-0@bernina.ethz.ch>; Wed, 28 Jul 1993 22:53:05 +0200
--* From: Philip Santas <santas@inf.ethz.ch>
--* Received: from rutishauser.inf.ethz.ch (rutishauser-gw.inf.ethz.ch) by neptune id AA24828; Wed, 28 Jul 93 22:53:01 +0200
--* Date: Wed, 28 Jul 93 22:53:00 +0200
--* Message-Id: <9307282053.AA20062@rutishauser.inf.ethz.ch>
--* Received: from ru7.inf.ethz.ch.rutishauser by rutishauser.inf.ethz.ch id AA20062; Wed, 28 Jul 93 22:53:00 +0200
--* To: asbugs@watson.ibm.com
--* Subject: re-assignment to constants allowed, fuzzy order of evaluation, reference vs. value semantics
--* Cc: bronstein, williams, jenks@watson.ibm.com

--@ Fixed  by:  PI   Fri Mar 11 17:05:16 EST 1994 
--@ Tested by:  none 
--@ Summary:    not a bug 


More problems with the order of the evaluation,
scoping, constant vars, etc.

The following programs should return
(a) error, due toassignment to constant
(b) 3, 4, 5, 5
but they both compile and return
3, 3, 5, 4
(which I do not understand)

Additionally, if I add 'free y', the program compiles,
but I do not understand to which 'y' it refers
(it must be in an outer scope, no?)

Philip

----------program 1--------------------
x:SI == 3

f(y:SI):SI ==
   print(y)()
   free x
   x:=4
   print(y)()
   -- free y
   y:=5
   print(y)()
   x

f(x)

print(x)()
--------program 2---------------------------------
x := 3

f(y:SI):SI ==
   print(y)()
   free x
   x:=4
   print(y)()
   -- free y
   y:=5
   print(y)()
   x

f(x)

print(x)()


 
