If so, then I remain unconvinced it is a good idea. E.g. "call-by-reference to modify arguments" is in itself not a goal, since it doesn't achieve anything. You can however use this feature to implement multi valued functions that addresses some issues that the current solution has. My opinion is that these "higher" problem should be addressed and solutions thought out for them. An impulse solution (that will not do) for mutli valued functions is to name the return values:
([ "file": string f, "crc32": int e ]) = do_shady_things();
This is a bad solution (unless additional magic is added) since it still makes the difference between single valued and multi valued functions to big. You would like to extend a single value function to return more values without having to change existing code.
/ Martin Nilsson (har bott i google)
Previous text:
2003-04-16 15:50: Subject: Pointers/lvalues
I mentioned how the `&*this lfun would make it easier to implement "smart" strings, but that has nothing to do with argument passing. You must have misunderstood me.
As for examples I think I've given three already. One that shows the use of call-by-reference to modify arguments, one that shows how iterators can be used with pointer syntax (although it's of course a matter of opinion if that's an improvement, but if pointers are implemented it's a logical extension), and one that shows how pointers as return values allows them to be used in lvalue contexts.
The last part opens up interesting possibilities since iterators then can allow changes to the values they refer to. And as I've exemplified, it makes it efficient too since it allows the use of destructive `+= and similar. That's something an iterator function like set_value() can't do.
/ Martin Stjernholm, Roxen IS