我正在编写一个应该接受两个值的函数。第一个值应该根据输入的值创建最多五个数字的列表。根据输入的数字,第二个值应该采用列表并将其旋转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
有什么建议吗?
答案 0 :(得分:4)
逗号是反引用语法的一部分;见Section 2.4.6 (Backquote)。 如果在如上所述的反引号表达式的主体内部使用逗号,则逗号无效。
要分隔令牌,请使用Whitespace Characters。
IOW,而不是(my_rotate_n 1,2)
,你应该写(my_rotate_n 1 2)
。
(这不会使你的my_rotate_n
工作,当然,只是避免那个特定的错误。你应该花一些时间研究Lisp语法。)