Metacode mechanics
Kramer
Kramer_member at pathlink.com
Mon Mar 6 12:31:09 PST 2006
In article <du1q50$1qk8$1 at digitaldaemon.com>, Don Clugston says...
>
>David Medlock wrote:
>> Georg Wrede wrote:
>>
>> <snip>
>>> So I suggest that we:
>>>
>>> - continue developing the current D metalanguage
>>> - continue to have both Don's and Phobos' regexps
>>> - in this NG start the development of requirements for KBDM
>>>
>>> KBDM being Kick-Butt D Metalanguage. :-)
>>
>> This is a very good idea, as code-which-generates-code is the heart of
>> some powerful techniques(Lisp/Scheme macros among them).
>>
>> To make them truly work however one of the following is really needed:
>>
>> 1. Runtime evaluation, as in scripting type languages. In this case all
>> you need is a function which returns a string.
>>
>> 2. A _uniform_ way to represent all the constructs of the language. This
>> works in Lisp because everything is a List(actually a CONS cell), and
>> you can simply walk the tree checking for symbols and generating code as
>> needed.
>
>I'm sure that compile time reflection is the way to go.
>We already have the .mangleof property, which maps any type to a string.
>Once we get array literals, you could have an array of strings showing
>all members of a given item.
>eg a property
>char [][] .membersof
>which is valid for any type.
>
>Then with __identifier(char []) you could walk the syntax tree.
>
>Somewhat lacking in syntactic sugar, and doesn't deal with control
>structures, but it gets you to most of the interesting stuff.
>
>I've already written templates that do:
>char [] qualifiednameof!(alias x)
>char [] symbolnameof!(alias x)
>which work for any variable, function, type or module x,
>and as a side-effect, you get loads of type info. I don't think too many
>additions would be required to make everything possible. But, you'd
>certainly want some simplified syntax.
>
>> D is much simpler than C++, I will agree wholeheartedly. However, I fear
>> that such a language strapped on to D would be rife with kludges to
>> accomodate its (relatively)complex syntax.
>>
>> Cheers.
>> -DavidM
I wonder if Walter checks this news group. I've heard many people asking for
some type of full reflection capabilty. I'm not that great with templates and
meta-programming, but it sounds like some people here are saying it would help
fill out D's capabilities in this arena. Maybe it's time to press for this
again as a serious improvement to D?... (just thinking out loud)
-Kramer
More information about the Digitalmars-d-dtl
mailing list