2017-02-11 16 views
1

我正在編寫一個應該採用兩個值的函數。根據輸入的值,第一個值應該創建最多五個數字的列表。第二個值應該是列表並根據輸入的數字將它旋轉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

不能使用逗號分隔參數。使用空間。看看這個函數,你對Lisp語法似乎並不熟悉。你應該閱讀一些Lisp書(例如試用[Practical Common Lisp](http://www.gigamonkeys.com/book/))。 – jkiiski

回答

4

Comma

The comma is part of the backquote syntax; see Section 2.4.6 (Backquote) . Comma is invalid if used other than inside the body of a backquote expression as described above.

分隔標記,使用Whitespace Characters

IOW,而不是(my_rotate_n 1,2)你應該寫(my_rotate_n 1 2)

(這不會讓你my_rotate_n工作,當然,只是避免特定的錯誤。您應該投資一些時間在研究Lisp的語法)。