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