Currently, we have the following syntax:

Foo(x, y, z): 
  defines NS1 x
  refers to NS2 y (otherwise refers to NS2 y)
  refers to NS3 z

While one can argue that the whole term Foo(x, y, z) really defines x, it does not refer to y and z. Actually, y and z themselves are the references.

Thus, would be the following syntax more precise?

Foo(x, y, z):
  x defines NS1
  y refers to NS2 (otherwise to NS3)
  z refers to NS3
Submitted by Guido Wachsmuth on 8 March 2013 at 16:14

On 8 March 2013 at 18:34 Guido Wachsmuth tagged rfc

On 11 March 2013 at 09:56 Gabriƫl Konat commented:

That would indeed be more precise. Some students during the CC lab were confused by the refers to thing.


On 12 March 2013 at 16:18 Eelco Visser commented:

Just a bunch of examples


Class(name, super, body) :
defines Class name
imports Field from Class super

Class(name, super, body) :
defines Class name
refers to Class super

Type(x):
refers to Class x

VarDef(x, t, e):
defines Variable x of type t in subsequent scope

Var(x):
refers to Variable x

Let(bindings, e) :
imports Variable from bindings into e

LetBind(x, e) :
defines Variable x in subsequent scope

LetRec(bindings, e) :
imports Variable from bindings into e

LetRecBind(x, e) :
defines Variable x in current scope

Conclusion: we stick with the SLE 2012 syntax.


On 12 March 2013 at 16:32 Eelco Visser commented:

On 12 March 2013 at 16:32 Eelco Visser closed this issue.

Log in to post comments