fork download
  1. (defun print-array (a m n &key ((:item-getter p)))
  2. (format t "~a:~%" p)
  3. (dotimes (i m)
  4. (dotimes (j n)
  5. (format t "[~d, ~d] = ~a~%" i j (funcall p a i j)))))
  6.  
  7. (defun 2d-array-get-item (a i j)
  8. (aref a i j))
  9.  
  10. (defun array-of-arrays-get-item (a i j)
  11. (aref (aref a i) j))
  12.  
  13. (let ((2d-array (make-array '(2 3)
  14. :initial-contents
  15. '((1 2 3)
  16. (4 5 6))))
  17. (array-of-arrays (make-array 2
  18. :initial-contents
  19. (list (make-array 3 :initial-contents '(1 2 3))
  20. (make-array 2 :initial-contents '(4 5))))))
  21. (format t "~a~%" 2d-array)
  22. (format t "~a~%" array-of-arrays)
  23. (print-array 2d-array 2 3 :item-getter '2d-array-get-item)
  24. (print-array array-of-arrays 2 3 :item-getter 'array-of-arrays-get-item))
Runtime error #stdin #stdout #stderr 0s 10528KB
stdin
Standard input is empty
stdout
#2A((1 2 3) (4 5 6))
#(#(1 2 3) #(4 5))
2D-ARRAY-GET-ITEM:
[0, 0] = 1
[0, 1] = 2
[0, 2] = 3
[1, 0] = 4
[1, 1] = 5
[1, 2] = 6
ARRAY-OF-ARRAYS-GET-ITEM:
[0, 0] = 1
[0, 1] = 2
[0, 2] = 3
[1, 0] = 4
[1, 1] = 5
stderr
*** - AREF: index 2 for #(4 5) is out of range