【发布时间】:2013-01-19 08:19:41
【问题描述】:
我创建了一个函数,它应该具有ARRAY 类型的词法变量:
(defun give-rank-vec (dir-1 dir-2 file-1 file-2)
(let* ((cm-size (array-dimension (Swc (make-ff-array dir-1 file-1)
(make-ff-array dir-2 file-2))
0))
(rank-dump-vec (make-array `(,cm-size)))
(Swc' (Swc (make-ff-array dir-1 file-1)
(make-ff-array dir-2 file-2)))
(Sbc' (Sbc (make-ff-array dir-1 file-1)
(make-ff-array dir-2 file-2))))
(dotimes (j cm-size)
(setf (svref rank-dump-vec j)
(/ (get-element Sbc' j j)
(get-element Swc' j j))))
rank-dump-vec))
(defun Sbc (cmatrix1 cmatrix2)
(add-matrices (Si cmatrix1)
(Si cmatrix2)))
(defun add-matrices (A B)
(let ((C (make-array (array-dimensions A))))
(dotimes (i (array-dimension A 0))
(dotimes (j (array-dimension A 1))
(setf (aref C i j) (+ (aref A i j) (aref B i j)))))
C))
但是,当我对这个函数进行 SLIME 时,我得到了错误:
The value
(SBC (MAKE-FF-ARRAY DIR-1 FILE-1)
(MAKE-FF-ARRAY DIR-2 FILE-2))
is not of type
ARRAY.
[Condition of type TYPE-ERROR]
Swc 工作正常,因为它似乎返回了一个数组 - 但是 Sbc 没有 - 我用小型和巨大的(wc 13000 65000 627677)平面文件测试了Sbc,它在调用时返回了一个数组SLIME,但是在这种情况下它不起作用。 let* 表达式似乎写得对 - 我不确定我在这里做错了什么。
【问题讨论】:
-
所以你认为引号字符可以是符号的字符?
-
啊,谢谢。我不知道符号的字符限制。现在可以使用了。
标签: arrays lisp common-lisp let