2010-12-05 12 views
4

J'ai besoin d'aide avec la fonction format et les baies.Procédure de format Lisp appliquée aux baies

Mon objectif consiste à imprimer une matrice bidimensionnelle de 2 N & middot; N valeurs entières comme N entiers par ligne. Par exemple:

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

doivent être imprimés comme

1 2 3 
4 5 6 
7 8 9 

Je ne pouvais pas trouver toute la documentation sur l'utilisation de format pour imprimer des tableaux. Peut-il être fait réellement, ou devrais-je convertir mon tableau dans une liste et utiliser quelque chose comme:

(format t "~{~%~{~A~^ ~}~}" list) 

Répondre

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 "~%"))) 
4

Si je ne me trompe pas, il n'y a aucun moyen direct pour format d'aller « dans » un tableau. Vous pouvez écrire votre propre fonction, à utiliser par tilde-slash (~/function/, voir CLHS), ou vous pouvez contraindre le tableau à une liste et utiliser les directives que vous avez proposées, ou ~/pprint-tabular/. Si vous voulez définir votre propre, le CLHS a un exemple de code pour pprint-tabular que vous pouvez modifier pour les tableaux.