【发布时间】:2012-10-23 07:31:37
【问题描述】:
我正在用 lisp 编写矩阵转置函数。从以下代码可以看出我的做法:
(defun matrix-T (matrix)
(cond ((null matrix) matrix)
(t (list
(do ((i 0 (+ i 1)))
((> i (length matrix)))
(format t "(mapcar #'(lambda (x)(nth ~A x)) matrix) %" i))))))
如您所见,我试图让 do 循环的输出作为 列表函数的参数。但是,我只得到从 matrix-T 返回的 do 循环输出。无论如何我可以纠正这个问题吗?
【问题讨论】:
-
您的 DO 循环在返回值子表单中没有任何内容,因此它返回 NIL。它只是使用 FORMAT 函数将输出打印到
*STANDARD-OUTPUT*。你想返回什么? -
我只是想让它返回它输出的文本
-
但是输出和返回值不是一回事。您真的希望
matrix-T返回字符串列表而不是新矩阵吗? -
概念是将输出作为参数输入到列表函数中,然后将返回一个新的矩阵。
-
我将矩阵表示为列表中的列表。
标签: matrix lisp arguments output