首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >值不是数组类型

值不是数组类型
EN

Stack Overflow用户
提问于 2013-02-04 23:35:09
回答 1查看 173关注 0票数 0

我已经创建了一个函数,它应该具有ARRAY类型的词法变量

代码语言:javascript
复制
(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))

然而,当我粘滞这个函数时,我得到了错误:

代码语言:javascript
复制
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*表达式似乎写对了-我不确定我在这里做错了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-05 02:22:37

在Common Lisp中,单引号字符'是一个终止宏字符。请参阅Figure 2-7 in the Hyperspec

如果要在符号中使用此字符,则必须使用反斜杠或一对竖线将其引起来:

代码语言:javascript
复制
CL-USER 65 > '(quote-at-the-end-\' |QUOTE-AT-THE-END-'| quote-at-the-end-|'|)
(QUOTE-AT-THE-END-\' QUOTE-AT-THE-END-\' QUOTE-AT-THE-END-\')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14690034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档