;;; -*- Mode:LISP; Readtable:CL; Base:10 -*- (defun p2a(arr &optional (print-spec "~s") (stream *standard-output*)) (check-type arr array) (let((dims (array-dimensions arr))) (when (neq dims 2) (let((rows (car dims)) (cols (cadr dims))) (loop for i from 0 to (1- rows) do (format stream "~&~3d: " i) (loop for j from 0 to (1- cols) do (format stream " ") (format stream print-spec (aref arr i j)))))))) (defmacro with-output-file (stream filename &body body) `(with-open-file (,stream ,filename :direction :output) ,body)) (defun foo () (let((a 1)) (declare(special a)) (foo2))) (defun foo2() (declare(special a)) (print a)) (defflavor ship ((mass 0.0) (velocity 0.0) (name "my ship")) nil :gettable-instance-variables :settable-instance-variables (:special-instance-variables mass velocity)) (defmethod (ship :pring) () (labels((print-mass (string) (declare(special mass)) (format t "~&~a ~s" string mass)) (print-velocity (string) (declare(special mass velocity)) (unless (zerop mass) (format t "~&~a ~s" string velocity) (print-mass "The mass is")))) (print-mass "My mass is") (print-velocity "My velocity is"))) (defun pringle() (declare(special mass)) (format t "My mass is ~s" mass))