That's related with the problem the parent is talking about: it's very easy to create DSLs in in languages like Common Lisp, so people use them a lot. But for an IDE's parser, or even for a new coder discovering the codebase, it's pretty tricky to figure out what the code does.
If somebody is ultra-familiar with Common Lisp but for some reason never learned how the loop construct worked they might be stumped when they encounter the following code:
(loop for x in '(foo 2)
thereis (numberp x))
What does that do exactly? What will it evaluate? What will it return? Which one of these symbols are special keywords and which one just refer to variables or functions?Meanwhile if you code in, say, C, the macro system is so crappy and clunky that you basically avoid it for anything complicated. Writing a similar LOOP macro in C would be an absolute shitshow (not that it prevented people from trying). As such C code tends to be much more verbose, but also much easier to follow if you know the core rules of the language.
Using Slime, the Common Lisp IDE mode in Emacs, there are at least four ways to answer your loop questions:
1. Ctrl-x, Ctrl-/ to look it up in the Lisp spec
2. Alt-. to jump to the definition
3. Alt-x slime-macro-expand-1 or Alt-x slime-macro-expand-all to see what code the macro generates
4. Execute it in the REPL and see what it does.
Option 1 only works for things defined in the standard, obviously, but options 2-4 work for everything.