代码之家  ›  专栏  ›  技术社区  ›  PuercoPop

为什么有些人在循环宏中的子句中使用关键字?

  •  4
  • PuercoPop  · 技术社区  · 10 年前

    它能解决任何问题吗?根据PCL的第一个脚注,如果不是关键字,它将在当前包中实习符号。由于所有的关键字都被放置在关键字包中,这将防止多个符号被放置在不同的包中。但还有其他优势吗?它会产生什么问题?(我猜肯定有问题,因为这不是普遍的惯例)

    3 回复  |  直到 10 年前
        1
  •  10
  •   Vatine    10 年前

    不,唯一的优点是不会在读取代码的任何包中出现额外的符号。

    这本身并不是一个问题,但这正是使(某些)自动内省的元素变得更加困难的原因之一。如果您小心地为LOOP“关键字”使用关键字,那么只需查看包中的符号,即可轻松识别所有函数、变量和宏的名称。

        2
  •  7
  •   user1597986    10 年前

    在支持lisp的编辑器中,关键字被突出显示。在循环中使用关键字有助于突出循环结构。

        3
  •  5
  •   Frank Zalkow    10 年前

    同样来自PCL:

    循环关键字 有点用词不当,因为它们不是关键字符号。事实上 LOOP 不在乎符号来自哪个包。当 回路 宏解析其主体,它认为任何适当命名的符号都是等价的。如果你想的话,你甚至可以使用真正的关键字-- :for , :across 等等,因为它们也有正确的名称。但大多数人只是使用简单的符号。因为循环关键字仅用作语法标记,所以它们是否用于其他目的——用作函数名或变量名并不重要。

    (Peter Seibel, 实用常用Lisp , Chapter 7 ,脚注8.)