Why Lisp Macro Sucks

By Xah Lee. Date: . Last updated: .

Lisp Macros Complexity

here's a lisp macro, from GNU Emacs 27.1 of 2020:

elisp dotimes 2021-11-06
elisp dotimes 2021-11-06

can a sane person read that?

Is Your Language WEAK that You NEED Meta Programing?

lisp macro is a form of meta programing. If you have to use meta-programing to solve a problem, it indicates perhaps your language isn't expressive enough in the first place, or you are going round-about.

Damnation of Lisp Macro and Special Forms

(apply #'or '( nil nil t))

;; Debugger entered--Lisp error: (invalid-function or)
;;   or(nil nil t)
;;   apply(or (nil nil t))
;;   eval((apply (function or) (quote (nil nil t))) nil)
;;   elisp--eval-last-sexp(nil)
;;   eval-last-sexp(nil)
;;   funcall-interactively(eval-last-sexp nil)
;;   call-interactively(eval-last-sexp nil nil)
;;   command-execute(eval-last-sexp)

It doesn't work because or is a “special form”, meaning, it's a builtin macro.