On Fri, Jan 9, 2009 at 4:29 AM, Nicolas <dran...@free.fr> wrote: > Bill Baxter Wrote: >> On Thu, Jan 8, 2009 at 5:36 PM, bearophile <bearophileh...@lycos.com> wrote: >> > Brad Roberts: >> > >> >> Restating in the form of a question... When would you _ever_ want {...} >> >> to not form a scope? >> > >> > Recently I have shown a possible syntax for express general unsafeties in >> > D code, for example: >> > >> > unsafe (bounds, overflow) { >> > ... // here there's no array bound checks, not integral overflow checks >> > } >> > >> > I think this safe(...){...} and unsafe(...){...} don't need to form a >> > scope, like static if. >> > >> > -------------------------- >> > >> > Bill Baxter: >> > >> >>I do think it would be nice if there was some kind of alternate non-scope >> >>block delimiter syntax in D. When you have static ifs mixed with regular >> >>ifs and versions it starts to be pretty difficult to see the flow of >> >>things. Something like >> > static if (x) :: >> > some stuff >> > ::< >> > >> > Probably I don't understand that syntax. >> >> It just means curly braces. I don't really care what syntax it is, >> just something besides { and } for non-scope blocks. >> >> > A more full example may help me understand it. But if I understand it >> > correctly, then I don't like that syntax. The {} add a little of noise, >> > but help you know for sure inside where you are >> >> Do they really help you see where you are in something like this: >> >> void Do_something(T)(int i) >> { >> if (i == 0) { >> static if (is(T==A)) { >> A.SomeAlias x; >> } >> else static if(is(T==B)) { >> B.SubType x; >> } >> else { >> T x; >> } >> x = ... whatever >> } >> else { >> int y = x; >> } >> } >> >> To me it's hard to see those variable declarations as being anything >> other than scoped to the blocks they're in. >> So all I'm saying is if we could have some different delimiters for >> non-scope blocks then it might be nice, and make it easier to see when >> scopes are ending and when they are not. >> >> --bb > > I'd do: > > void Do_something(T)(int i) > { > if (i == 0) > { > static if (is(T==A)) > { > A.SomeAlias x; > } > else static if(is(T==B)) > { > B.SubType x; > } > else > { > T x; > } > x = ... whatever > } > else > { > int y = x; > } > } > > it's parallel programming...
I'm having trouble resisting the urge to re-indent that code. It totally looks like someone got their tabs and spaces mixed up. --bb