应用于数组的Lisp格式化程序

4

我需要一些关于format函数和数组的帮助。

我的目标是将一个由N·N个整数值组成的二维数组按每行N个整数的格式进行打印。例如:

#2A((1 2 3)
    (4 5 6)
    (7 8 9))

应该打印为:
1 2 3 
4 5 6
7 8 9

我找不到有关如何使用format打印数组的文档。它是否可以实现,或者我应该将数组转换为列表并使用类似以下的内容:

(format t "~{~%~{~A~^ ~}~}"  list)
2个回答

4
如果我没记错的话,format没有直接进入数组的方法。您可以编写自己的函数供波浪号斜杠 (~/function/, 参见CLHS) 使用,或将数组强制转换为列表并使用您提出的指令或~/pprint-tabular/。如果您想定义自己的函数,CLHS有关于 pprint-tabular 的示例代码,您可以修改它来适用于数组。

4
(defun show-board (board)
  (loop for i below (car (array-dimensions board)) do
        (loop for j below (cadr (array-dimensions board)) do
          (let ((cell (aref board i j)))
            (format t "~a " cell)))
        (format t "~%")))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接