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