Namespace:
Not Null references:
I chose this syntax: int& b = a; because I like it in C++. This
syntax is recognized by Remus and is converted to: Ref!(int) b
= a;
If you must give a reference to a function or other things like
that, you can write:
[code]
Foo obj = new Foo();
some_function(@obj)
[/code]
instead of
[code]
Foo obj = new Foo();
{
Foo& robj = obj;
some_function(robj);
}
This seems far from being well designed not-nullable
pointers/class references :-(
[/code]
Namespaces: You can declare a namespace this way:
[code]
namespace io {
void print() {
writeln("foo");
}
}
[/code]
you _cannot_ use it without explicit "use" statement (will
maybe change). So you must write
[code]use io;[/code] to use _all_ methods from "io", or, like
import, [code]use io : print[/code] or [code]use io : write =
print;[/code]
"use" statements are converted to one or more alias' and
namespaces to (mixin) templates.
But what are they useful for?
Stack Instances:
There aren't many words for: if you need a stack instance,
write: local Foo f = new Foo(); it's more or less the same as
scope.
scope was removed for certain reasons, are those reasons not
valid for "local"?
Bye,
bearophile