Plaster
New
List
Login
text
default
anonymous
2021.12.10 00:13:20
(defun chunk (sequence count step &optional leftover ) (symbol-macrolet ((add-leftover (setf current (concatenate (typecase sequence (cons 'list)(vector 'vector)) current (subseq leftover 0 (min (- count (length current)) (length leftover))))))) (loop :with end := (1- (length sequence)) :for index :from 0 :by step :below end :for current := (subseq sequence index (min (+ index count) end)) :when (< (length current) count) :do (setf current (typecase leftover (keyword nil) (cons add-leftover) (vector add-leftover) (t current))) :when (not (null current)) :collect current)))
Raw
Annotate
Repaste
Edit