Am 17.09.2010 09:51, schrieb Nick Sabalausky:
 One thing that could be used for that is the eval() function I've
 recently
 added to my SemiTwist D Tools library:

 
http://www.dsource.org/projects/semitwist/browser/trunk/src/semitwist/util/process.d

 Example:
 -----------------------------
 import semitwist.util.all;
 void main()
 {
      auto x = eval!int(q{ return 21 * 2; }); // String can be
 runtime-generated
      assert(x == 42);

      eval!void( q{ writeln("Hello World"); }, q{ import std.stdio; } );
 }
 -----------------------------

 is that something like an "runtime" mixin

 would be great to have something like that in the standard - then i can
 stop writing my own script interpreter for my at runtime loaded DSLs :-)

 (and my dream is that walter can use something like that internaly for
 CTFEs)

Yea, that was kind of my original motivation for it. I was really jealous of
Nemerle's approach to compile-time execution (AIUI, the Nemerle compiler
just invokes itself to compile the compile-time code, and then loads the
resulting DLL and runs it).

yea the easiest approach - do you got a link to an good nemerle example of this

I figured there was nothing stopping a
native-compiled langauge from doing essentially the same. To me,

and without the need for generating a DLL (could be an option)

(but i hope D will get its own "dynamic module" as an abstraction over Windows .DLL or Linux .SO that can be maybe used)

> that
sounded like "compile-time eval()", so it seemed to make sence to start with
a run-time eval() (already done, more or less, and potentially useful in
it's own right) and then toss in whatever compiler hacks/intrinsics would be
needed to make a ctfe-version possible (still "todo").

a ctf-version of eval or using this idea as an evaluation base (combined with an AST which is able to give D informations like pure, static, const ...) so there no extra ctfe "intepreter" needed (which can't sadly not evolve at the speed the language do)

Reply via email to