On 07/15/2013 10:51 PM, JS wrote:

> On Tuesday, 16 July 2013 at 04:37:33 UTC, Ali Çehreli wrote:
>> On 07/15/2013 08:43 PM, JS wrote:
>>
>> > http://dpaste.dzfl.pl/7c8b0ba9
>> >
>> > Why the heck can't we use integers in ctfe's? There seems to
>> be no
>> > simple way to create a counter and this is one of the most
>> basic
>> > programming constructs to use.. yet with ctfe's it's
>> impossible.
>> >
>> > I'd like each variable in the nested structs to be
>> incremented properly.
>>
>> I did not read the code but just from your description, the separate
>> compilation model that D uses would preclude that. For example,
>> compilation of a.d would not know anything about the counter that b.d
>> has counted during its compilation.
>>
>> Ali
>
> Huh? what is a.d and b.d?

Yeah, I should have read your code before writing that. My comment is for the general case where a.d and b.d are two separte modules that are compiler separately. I thought that you wanted a counter to continue counting between modules.

> The template transforms a string into a D code string... which is then
> string mixed in. The counter and code generation have nothing to do with
> the result. A counter is needed in the generation of the code to
> generate enum like characteristics.
>
> It does use recursion, and I could pass a variable that counts the
> number of elements but this too would probably not work due to D
> bitching about using ints.

I must still be in the dark but I seriously doubt that you would have problems incrementing an int in D.

> I imagine one could hack D to make it's flawed CTFE system work, to some
> degree... like using strings:
>
>
> template inc(string s)
> {
>      string _(string a)
>      {
>          if (a == "0") return "1";
>          if (a == "1") return "2";
>          if (a == "2") return "3";
>          if (a == "3") return "4";
>          return "0";
>      }
>      enum inc = _(s); pragma(msg, ":"~_(s));
> }
>
> which is a modulo 4 incrementer. So, CTFE's have the ability to count...
> but extremely short sighted that they don't. I imagine can write a whole
> template library using strings to emulate ints in ctfe's... what a shame
> though...

That would be extreme.

Ali

Reply via email to