Hello!

There are local imports available in D.
But if contract programming is necessary there are no common function scope.

So I suppose D need common scope:

-----------------------------------
auto functionName(Range1, Range2)(Range1 r1, Ranger2)
scope  {
    import std.range; //imports are allowed
    enum MaxLength = 1024; //enums are allowed
immutable A = [0.123, 0.456, 0.789]; // immutable and const are allowed
    bool isOdd (uint i) {return i%2;}

    static assert(isInputRange!Range1,
        Range1.stringof!~" is not InputRange");


    int i; //Error, mutable data disallowed.
immutable length = r1.length; //Error, can't use function parameters.


}
in {
assert(!r1.empty); // we already know that r1 is InputRange and function have local imports!

 // can use std.range, MaxLength, A, isOdd
}
out(result) {
 // can use std.range, MaxLength, A, isOdd
}
body {
 // can use std.range, MaxLength, A, isOdd
}
-------------------------------


What do you think?

Best Regards,
Ilya

Reply via email to