On Sunday, 19 February 2017 at 15:22:50 UTC, bachmeier wrote:
On Saturday, 18 February 2017 at 20:15:55 UTC, timmyjose wrote:
4. I have heard good reports of D's metaprogramming
capabilities (ironically enough, primarily from a thread on
the Rust user group), and coming from a Common Lisp (and some
Racket) background, I am deeply interested in this aspect. Are
D macros as powerful as Lisp macros? Are they semantically
similar (for instance, I found Rust's macros are quite similar
to Racket's)?
I was a Scheme/Common Lisp user for quite a while before moving
to D. Lisp macros are more powerful (there's not much you can't
do with them), but on the other hand, unless you stick with
simple use cases, it can be hard to get Lisp macros right.
You've got the whole defmacro vs hygienic debate. Also, the
rule of thumb is to avoid macros unless you can't do it with a
function.
Agreed.
I was never into heavy metaprogramming with Scheme or Common
Lisp. The simplicity of D's compile time capabilities mean I do
more metaprogramming in D, and I actually push a lot of stuff
from runtime to compile time, which I wouldn't have done with
Common Lisp.
That's very encouraging to hear! :-)