Printer for arrays
authorDavid Vázquez <davazp@gmail.com>
Sun, 20 Jan 2013 16:11:56 +0000 (16:11 +0000)
committerDavid Vázquez <davazp@gmail.com>
Sun, 20 Jan 2013 16:11:56 +0000 (16:11 +0000)
ecmalisp.lisp

index 03f2988..a02f3f6 100644 (file)
       ((stringp seq)
        (string-length seq))
       ((arrayp seq)
-       (get "length" seq))
+       (oget seq "length"))
       ((listp seq)
        (list-length seq))))
 
 (defun mapconcat (func list)
   (join (mapcar func list)))
 
+(defun vector-to-list (vector)
+  (let ((list nil)
+       (size (length vector)))
+    (dotimes (i size (reverse list))
+      (push (aref vector i) list))))
+
 ;;; Like CONCAT, but prefix each line with four spaces. Two versions
 ;;; of this function are available, because the Ecmalisp version is
 ;;; very slow and bootstraping was annoying.
                      (prin1-to-string (car last))
                      (concat (prin1-to-string (car last)) " . " (prin1-to-string (cdr last)))))
                ")"))
+      ((arrayp form)
+       (concat "#" (prin1-to-string (vector-to-list form))))
       ((packagep form)
        (concat "#<PACKAGE " (package-name form) ">"))))