#CommonLisp includes a number of meta-linguistic utilities vital for compiler building. Like pathname resolution (PATHNAME-MATCH-P,) or type specifier checking (SUBTYPEP,) or obvious things like READ. But this set of building blocks is incomplete. In my quest to rely on the language and compiler as much a possible in all my projects, I had this situation more than once:
• Do something manually and heuristically
• Realize there’s a utility for that in the language and use it
• And then encounter a problem that should be solvable, if only the used utility had an “obvious” counterpart/sub-utility/extension
• Go back to manual handling, because the utility set is incomplete
Happened with cl-match-patterns and pathnames, and happens now with typed-macros (TBA.) So yeah, Common Lisp lacks “obvious” meta-programming utils, and now I wonder why some were included but some weren’t.