lisp - (loop for) 和 (loop :for) in Common Lisp 之间的区别

标签 lisp common-lisp

<分区>

我刚看到 Sylwester 对 this question 的回答,我觉得很奇怪,循环到处都是冒号。

通常,我会写

(loop for n below 10 do (princ n) (terpri))

代替

(loop :for n :below 10 :do (princ n) (terpri))

经过一些测试,我发现在第一个循环中,符号 forbelowdo 是 cl-user 的一部分(edit : 其实不是do,只有另外两个,可能是因为do也是cl包里的一个宏),不是用第二个.同样,单独的 'X 将成为 cl-user 的一部分,而不是 ':X。 symbol-package 函数告诉我后者在关键字 package 中。

现在,没有冒号的第一个循环对我来说看起来更漂亮,所以我想知道前面的评论是否是使用第二个循环的充分理由。这些符号“包含”在当前包中看起来很无礼,但也许我忽略了后果。

有什么想法吗?

最佳答案

你大部分已经回答了你自己的问题,区别就如你所描述的那样。 :some-symbol 将在 :KEYWORD 包中,而 'SOME-SYMBOL 将在您当前的包 CL-USER 默认情况下。在 loop 宏中,这只是个人喜好问题。例如,有些人更喜欢使用 :for 符号来在他们的文本编辑器中获得更好的语法高亮显示。

关于lisp - (loop for) 和 (loop :for) in Common Lisp 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28498990/

相关文章:

string - 如何在 lisp 中输出不带引号且不返回任何内容的字符串?

scheme - MIT 方案中的分类器和变压器是什么?

lisp - Quicklisp 覆盖默认系统

html - HTML 中的 Lisp 风格引用

scheme - 在两个列表上运行的函数

recursion - 在 lambda 函数中递归

function - 定义递归函数的 LISP 函数

lisp - 试图计算总工资

lisp - Common-LISP - 减法

function - Clojure 核心库中大约有多少个函数?