# Pastebin o54Yop68 (defmacro with-cpring5 ((cpinternals cpindex) &body body) "Expose two SETF-able symbol-macros inside BODY: @5q ⇔ (aref CPINTERNALS CPINDEX) @5phi ⇔ (aref CPINTERNALS (1+ CPINDEX))" (let ((vec (gensym "VEC-")) (idx (gensym "IDX-"))) `(let ((,vec ,cpinternals) (,idx ,cpindex)) (symbol-macrolet ((@5q (aref ,vec ,idx)) (@5phi (aref ,vec (1+ ,idx)))) ,@body)))) (let ((v (make-array 10 :element-type 'double-float :initial-contents '(0.0d0 1.0d0 2.0d0 3.0d0 4.0d0 5.0d0 6.0d0 7.0d0 8.0d0 9.0d0)))) (with-cpring5 (v 3) #+(or)(setf @5q 1d0 ; v[3] <- 1.0 @5phi 2d0) ; v[4] <- 2.0 (values @5q @5phi)))