git.fiddlerwoaroof.com
collections-for.lisp
1a84f71f
 (in-package :collection-class)
 
 (defclass collection-iterator (for:iterator)
   ())
 
 (defmethod initialize-instance :after ((iterator collection-iterator) &key object)
   (setf (for:object iterator)
         (items object)))
 
 (defmethod for:has-more ((iterator collection-iterator))
   (not (null (for:object iterator))))
 
 (defmethod for:next ((iterator collection-iterator))
   (let ((collection-items (for:object iterator)))
     (prog1 (car collection-items)
       (setf (for:object iterator)
             (cdr collection-items)))))
 
 (defmethod for:make-iterator ((collection collection) &key)
   (make-instance 'collection-iterator :object collection))