Ok, so this now works:

//////
struct X {
  a:int;
  b:double;
  fun f (x:int) => self.a + x + x;
  fun g  => self.a;
  proc s (x:int) => self.a = x;
};

println "Blah";
var x : X = X (1,2.0);
println$ x.a, x.b, f x 42, g x;
println$ x.a, x.b, x.f 42, x.g;
&x.s 5;
println$ x.a, x.b, x.f 42, x.g;
/////

For some weird reason I decided to use a ref for a procedure
instead of a val of pointer type. Therefore the set procedure s
above is written

   self.a = x

rather than

    self.a <- x

You would have to do:

   &self.a <- x

However, you still have to take the address

   &x.s 5;

since "ref" is syntax hack, we don't have real C++ style references
(deliberately!!!!!)


Note I changed the precedence of & a while back so it binds very
tightly now. So &x.f means (&x).s and not &(x.s) as it might in C.
Just got sick of the brackets :)

Now for you fun .. this works...

proc weird => println$ "Helio";
weird;

i mean, no arguments to the procedure AND using the => notation
instead of the { } notation. Dang .. I wrote the compiler and designed
the grammar and I didn't know you could do it :)

--
john skaller
skal...@users.sourceforge.net
http://felix-lang.org




------------------------------------------------------------------------------
Try before you buy = See our experts in action!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-dev2
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to