On Wednesday, 27 February 2013 at 23:34:42 UTC, Walter Bright wrote:
On 2/27/2013 2:55 PM, Nick Sabalausky wrote:
I like that, but "run arbitrary code at top level" may be a bit of a
problem because it conflicts with allowing forward references.

Ie, for example:

    void foo() { bar(); }
    void bar() { i = 3; }
    int i;

vs:

    void main() {
        void foo() { bar(); }
        void bar() { i = 3; }
        int i;
    }


The first one works, but the second doesn't. And my understanding is that the second one not working is a deliberate thing related to
not being in a declaration-only context.

It's a little more than that. People have a natural view of function bodies as executing top down. Functions also tend to be simple enough that this makes sense. People have a natural view outside functions as everything happening in parallel.

Plus, this is really hard to ensure that everything is initialized properly without going eager with setting to init.

Reply via email to