逗号在反引号之外是非法的?

时间:2017-02-11 20:25:49

标签: list syntax lisp common-lisp backquote

我正在编写一个应该接受两个值的函数。第一个值应该根据输入的值创建最多五个数字的列表。根据输入的数字,第二个值应该采用列表并将其旋转n次。

程序交互示例。

> (my_rotate_n 1,2)

> (3 4 5 1 2)

这是我目前的功能。

(defun my_rotate_n (y) (x)
    (append (loop for i from (+ 1 y) to (+ 4 y) collect i)
    (> x 0) (my_rotate_n (rotate-right y)(- x 1)))(list y))

当我测试输出函数时,我收到错误:comma is illegal outside of backquotes有什么建议吗?

1 个答案:

答案 0 :(得分:4)

Comma

  

逗号是反引用语法的一部分;见Section 2.4.6 (Backquote)。    如果在如上所述的反引号表达式的主体内部使用逗号,则逗号无效。

要分隔令牌,请使用Whitespace Characters

IOW,而不是(my_rotate_n 1,2),你应该写(my_rotate_n 1 2)

(这不会使你的my_rotate_n工作,当然,只是避免那个特定的错误。你应该花一些时间研究Lisp语法。)