Skip to content

Comment on Gödel, Escher, Elisp: The Beauty of Macrosparent

Comments

Yes, the D language has that as a feature in function arguments!

https://dlang.org/articles/lazy-evaluation.html

It makes it hard to know when things run. In Lisp you also have that problem everywhere, of course.

As the post shows this allows you to do stuff that looks like extending the syntax of the language.

I can’t decide if I love it or hate it!

Props to D for having such a simple implementation of fexprs[1].

The downside compared to macros I think is that, as argument expressions become lambdas, it becomes harder to manipulate them. Check the cond example which needs two fexprs, whereas one macro could do it.

Not sure about D, but if it were lisp, even lambdas could be manipulated as lists. Macro args not having the lambda wrapping just seems simpler.

[1] https://en.wikipedia.org/wiki/Fexpr

Walter Bright is against adding macros to D but D already has really advanced metaprogramming in other shapes:

https://dlang.org/spec/template-mixin.html

https://dlang.org/spec/traits.html

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.