www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - [spec, CC Dibyendu Majumdar] Should static foreach be in under

reply Mr. Spec <fixthespec example.org> writes:
As Dibyendu Majumdar has been working on fixing the spec (BTW 
thank you so much), I wanted to bring this up:

I just realized that static foreach is under the "conditional 
compilation" section in the spec 
(https://dlang.org/spec/version.html). It seems like this should 
be put somewhere else, because static foreach is not related to 
conditional compilation.

Thoughts?
May 18 2019
parent reply Mr. Spec <fixthespec example.org> writes:
On Saturday, 18 May 2019 at 23:37:28 UTC, Mr. Spec wrote:
 As Dibyendu Majumdar has been working on fixing the spec (BTW 
 thank you so much), I wanted to bring this up:

 I just realized that static foreach is under the "conditional 
 compilation" section in the spec 
 (https://dlang.org/spec/version.html). It seems like this 
 should be put somewhere else, because static foreach is not 
 related to conditional compilation.

 Thoughts?
Maybe it isn't just that static foreach should be moved, but maybe just change the page title from "Conditional Compilation" to something else that could contain compile time features such as version, debug, static assert, etc?
May 18 2019
next sibling parent reply Max Haughton <maxhaton gmail.com> writes:
On Saturday, 18 May 2019 at 23:39:55 UTC, Mr. Spec wrote:
 On Saturday, 18 May 2019 at 23:37:28 UTC, Mr. Spec wrote:
 As Dibyendu Majumdar has been working on fixing the spec (BTW 
 thank you so much), I wanted to bring this up:

 I just realized that static foreach is under the "conditional 
 compilation" section in the spec 
 (https://dlang.org/spec/version.html). It seems like this 
 should be put somewhere else, because static foreach is not 
 related to conditional compilation.

 Thoughts?
Maybe it isn't just that static foreach should be moved, but maybe just change the page title from "Conditional Compilation" to something else that could contain compile time features such as version, debug, static assert, etc?
To be rigorous, ideally the spec should abstract the process of execution into discrete steps, one of which would contain the compile time features of D (i.e. Expand all static foreach-s into rigorously defined D, but the actual lowering of this would be handled by a different chapter of the specification.
May 18 2019
parent reply Dibyendu Majumdar <d.majumdar gmail.com> writes:
On Sunday, 19 May 2019 at 01:27:12 UTC, Max Haughton wrote:
 On Saturday, 18 May 2019 at 23:39:55 UTC, Mr. Spec wrote:
 Maybe it isn't just that static foreach should be moved, but 
 maybe just change the page title from "Conditional 
 Compilation" to something else that could contain compile time 
 features such as version, debug, static assert, etc?
To be rigorous, ideally the spec should abstract the process of execution into discrete steps, one of which would contain the compile time features of D (i.e. Expand all static foreach-s into rigorously defined D, but the actual lowering of this would be handled by a different chapter of the specification.
I guess this is a tricky area. Is there any document that covers the steps - i.e. when do the compile time modifications occur in the compilation process? Do they occur repeatedly or only once? Regards
May 19 2019
parent Max Haughton <maxhaton gmail.com> writes:
On Sunday, 19 May 2019 at 09:37:17 UTC, Dibyendu Majumdar wrote:
 On Sunday, 19 May 2019 at 01:27:12 UTC, Max Haughton wrote:
 On Saturday, 18 May 2019 at 23:39:55 UTC, Mr. Spec wrote:
 Maybe it isn't just that static foreach should be moved, but 
 maybe just change the page title from "Conditional 
 Compilation" to something else that could contain compile 
 time features such as version, debug, static assert, etc?
To be rigorous, ideally the spec should abstract the process of execution into discrete steps, one of which would contain the compile time features of D (i.e. Expand all static foreach-s into rigorously defined D, but the actual lowering of this would be handled by a different chapter of the specification.
I guess this is a tricky area. Is there any document that covers the steps - i.e. when do the compile time modifications occur in the compilation process? Do they occur repeatedly or only once? Regards
Probably not: The semantic analysis parts of the frontend (conceptually) have to jump backwards and forwards because of the string mixins (at the very least). The specification should not make any real preference as to how the language is implemented, only specifying the exact semantics while leaving enough room for libraries to actually be implemented. This is probably too much to ask for at this stage, however the current behaviour of certain constructs (e.g. Structs) are underspecified e.g. moving, which need to be fixed more than the specification as a whole.
May 19 2019
prev sibling parent Dibyendu Majumdar <d.majumdar gmail.com> writes:
On Saturday, 18 May 2019 at 23:39:55 UTC, Mr. Spec wrote:
 I just realized that static foreach is under the "conditional 
 compilation" section in the spec 
 (https://dlang.org/spec/version.html). It seems like this 
 should be put somewhere else, because static foreach is not 
 related to conditional compilation.
Maybe it isn't just that static foreach should be moved, but maybe just change the page title from "Conditional Compilation" to something else that could contain compile time features such as version, debug, static assert, etc?
I haven't progressed beyond introduction yet so it will take me a while to get to that section. Perhaps you are right that the title needs to be changed. Regards
May 19 2019