(ql:quickload '(iterate)) (use-package :iterate) (defpackage sjl (:use :cl) (:shadow :for) (:export :for)) (defmacro-clause (sjl:FOR var IN-WHOLE-VECTOR v) "All the elements of a vector (disregards fill-pointer)" (let ((vect (gensym)) (index (gensym))) `(progn (with ,vect = ,v) (for ,index from 0 below (array-dimension ,vect 0)) (for ,var = (aref ,vect ,index))))) (iterate (sjl:for x :in-whole-vector #(1 2 3)) (print x))