I am looking to simplify expression

        x . a

At present we have "get_a x" as one interpretation. I am thinking to get rid of 
this AND
field name processing as such, so "x . a" just means "a x".  This means in a 
struct:

struct X { a:int; };

a is just a projection function .. in particular you can actually write

  x:X = X(1);
  println$ a x;

In addition 

  a (&x)

will be the address of x.a so you can write:

  a (&x) <- v;

and thus

  (&x).a = v;

It has taken a few YEARS to get to this point. The point is: now this fully 
uses proper value
semantics it will nest, that is:

        (&x).a.b.c = v;

will work correctly. 

It remains to handle arrays nicely (arrays have other problems).

Because (&x).a now returns a pointer, the old meaning is restored
with a new operator

        (&x).* a == x.a  .. same as (&x)->a in C

We don't use -> because in Felix it is used for function types:

        A -> B -> C

and is right associative instead of the required left associativity.

 
--
john skaller
skal...@users.sourceforge.net





------------------------------------------------------------------------------
Write once. Port to many.
Get the SDK and tools to simplify cross-platform app development. Create 
new or port existing apps to sell to consumers worldwide. Explore the 
Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join
http://p.sf.net/sfu/intel-appdev
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to