Quines
Don Clugston
dac at nospam.com.au
Tue Jul 11 12:48:45 PDT 2006
Lutger wrote:
> Cool.
> Try compiling http://www.dsource.org/projects/ddl/browser/trunk/meta/demo/beer.d
> from Don Clugston's meta library. No need for a preprocessor...
You just inspired me to update it to DMD 0.162. It's very simple now,
all the workarounds are gone. It's probably worth submitting to
99-bottles-of-beer.net now.
And yes, D templates seem to be even more powerful than the combination
of C preprocessor + C++ templates.
-Don.
>
> In article <e8to1l$180u$1 at digitaldaemon.com>, Stewart Gordon says...
>> BCS wrote:
>>> @run time
>>>
>>> void main(){printf(a~\140~a~\140";");}char[]a=`void
>>> main(){printf(a~\140~a~\140";");}char[]a=`;
>> http://smjg.port5.com/wwwep/quines/d.html
>>
>> Somewhere I've got one similar to the last of these but using writef.
>>
>>> @compile time =op
>>>
>>> const char[]a=`const char[]a=`;const char[]b=`;const char[]`;const
>>> char[]c=`;pragma(msg,a~\140~a~\140~b~"b=\140"~b~\140~b~"c=\140"~c~\140~c);`;pragma(msg,a~\140~a~\140~b~"b=\140"~b~\140~b~"c=\140"~c~\140~c);
>> Writing code to do stuff at compile time like this is an interesting
>> idea. I've seen the C preprocessor used for this:
>>
>> http://www.99-bottles-of-beer.net/language-c-c++-preprocessor-115.html
>>
>> Stewart.
>
>
More information about the Digitalmars-d-learn
mailing list