Implementing Scheme as DSL for D
vsb
v04bvs at gmail.com
Mon Mar 12 10:40:32 PDT 2007
I want to implement a library for D.
It's better to show as I imagine it now:
mixin(scheme("
(define my_plus (lambda (a b) (+ a b)))
"));
int a = 1;
int b = 2;
writefln("%d + %d = %d", a, b, my_plus(a, b));
function scheme() is a function which translates code in Scheme to code in D. I'm planning that resulting D code will just reflect all the structure, except few cases such as defining new functions.
In the case above it would be translated in next code:
"
SExpr my_plus(SExpr a, SExpr b) {
return new List(lambda, new List(a, b), new List(PLUS, a, b));
}
"
And after applying mixin() on this it introduces new function, which could be used naturally as plain D function. Of course it requires a supporting library.
Is there any things which could make my task impossible at all? As I see, functions which could be run in compile-time are restricted, but for simple parser (especially for such syntactically simple language as Scheme) they are powerful enough. Any ideas are welcome.
More information about the Digitalmars-d
mailing list