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
[email protected]
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/felix-language