2015-01-10 101 views
0

为什么不能编译?为什么它会出现说订购是一个未定义的功能?编译函数时为什么会出现“Undefined function”警告?

(defun ordered (numbers) 
    (sort numbers #'<)) 

(defun printing-ordered (numbers) 
    (princ (apply #'ordered numbers))) 

我正在使用SBCL和Emacs SlIME。 编译时我得到的错误是:

; compilation unit finished 
; Undefined function: 
;  ORDERED 
; caught 1 STYLE-WARNING condition 
+0

你可能想解释你做了什么。你用SLIME做什么?警告发生在使用未知函数编译函数时。这意味着'ORDERED'由于某种原因未知。 –

+2

与你无关的问题:'ordered'期望列表参数不是很多数字参数。 '打印顺序'应该可能只是'(princ(有序数字))' – Sylwester

+0

我编辑了这个问题。而Sylwester,我确实把它列入清单。 – Floofk

回答

0

运行的代码相同的位在我的Emacs煤泥SBCL组合给出了预期的结果 - 与消息“的参数无效号码”的条件。尝试先评估第一个defun,如果它有帮助的话。确实有点神秘。

作为旁注;就像@Sylwester所做的那样,我注意到你可能混合了funcallapply。后者将列表参数“拆包”为几个单独的参数,而前者只是按照原样传递给定的参数。

相关问题