Why do some people use keywords for the clauses in the loop macro?

前端 未结 3 1688
执笔经年
执笔经年 2021-01-19 10:18

Does it solve any problem? According to the first footnote of PCL, if not a keyword it interns the symbol in the current package. As all keywords are interned in the keyword

相关标签:
3条回答
  • 2021-01-19 10:36

    In lisp-aware editors, keywords are highlighted. Using keywords in loop helps highlight the loop structure.

    0 讨论(0)
  • 2021-01-19 10:37

    Also from PCL:

    Loop keywords is a bit of a misnomer since they aren't keyword symbols. In fact, LOOP doesn't care what package the symbols are from. When the LOOP macro parses its body, it considers any appropriately named symbols equivalent. You could even use true keywords if you wanted--:for, :across, and so on--because they also have the correct name. But most folks just use plain symbols. Because the loop keywords are used only as syntactic markers, it doesn't matter if they're used for other purposes--as function or variable names.

    (Peter Seibel, Practical Common Lisp, Chapter 7, Footnote 8.)

    0 讨论(0)
  • 2021-01-19 10:45

    No, the only advantage is to not end up with extra symbols in whatever package your code is read in.

    This isn't a problem in and of itself, but it is one of those things that make (some) elemens of automatic introspection more difficult. If you are careful to use keywords for LOOP "keywords", you can then easily identify the names of all your functions, variables and macros by simply looking at the symbols interned in the package.

    0 讨论(0)
提交回复
热议问题