Advertisement
Guest User

fa

a guest
Sep 5th, 2018
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.03 KB | None | 0 0
  1. (define-setf-expander values-subseq (sequence start end &environment env)
  2. (check-type start integer)
  3. (check-type end integer)
  4. (multiple-value-bind (temps values newval setter getter)
  5. (get-setf-expansion sequence env)
  6. (declare (ignore setter newval))
  7. (let* ((stemp (gensym "SEQUENCE"))
  8. (size (- end start))
  9. (_ (check-type size (integer 1)))
  10. (vtemps (loop repeat size collect (gensym "ELEMENT"))))
  11. (declare (ignore _))
  12. (values (append temps (list stemp))
  13. (append values (list getter))
  14. vtemps
  15. `(values ,@(loop for vtemp in vtemps
  16. for i from start
  17. collect `(setf (elt ,stemp ,i) ,vtemp)))
  18. `(values ,@(loop for i from start below end
  19. collect `(elt ,stemp ,i)))))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement