OK so the problem is now understood. What to do about it is 
another issue. Basically:

        expr = expr

is implemented as an assignment, and that cannot work. What we
have to do instead is map

        a . i . mem . j = expr

to

        * ( &a . i . mem . j ) = expr

i.e. we have to map

        f x = expr

to

        * (f (&x)) = expr

(recursively). The only exception is when you already have

        * (expr)  = expr

which can be left alone. Unfortunately, it isn't possible to detect that
case at the moment since the parser replaces

        *p

with

        deref p

I guess I can fix that. The general form:

        * (lhsp) = rhs

is equivalent to

        lhsp <- rhs

which means, basically, no other form of assignment can be allowed.
[Felix actually uses a native assignment operator rather than
the store-at operator]

Actually

        *&x = rhs

can be simplified to

        x = rhs

where x is a variable name, but that's the only case.

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




------------------------------------------------------------------------------
The Go Parallel Website, sponsored by Intel - in partnership with Geeknet, 
is your hub for all things parallel software development, from weekly thought 
leadership blogs to news, videos, case studies, tutorials, tech docs, 
whitepapers, evaluation guides, and opinion stories. Check out the most 
recent posts - join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to