Hacker News new | ask | show | jobs
by adambard 3044 days ago
This is absolutely correct, and considerate Lisp writers make a point of using macros only when necessary for exactly this reason.

That said, Lisp writers also use macros every day -- for example, in Clojure, only `if` is defined as a special form, and other conditional operators (`when`, `cond`, `case`, `condp`, `if-not`, etc.) are implemented as macros that use `if` under the hood. Good macros are almost necessarily difficult to implement, because they're deployed to solve problems that functions can't, but if done well they can be easy to read and use.