Function With-Slot-Bindings

Part of:

package metabang.utilities
( with-slot-bindings < slots > < instance > &body < body > )
makes this: (with-slot-bindings (((x x2) double-float) ((y y2) double-float)) location-2 body) into this: (let ((x2 (ensure-type (slot-value location-2 'x) 'double-float)) (y2 (ensure-type (slot-value location-2 'y) 'double-float))) body) If the first item of the binding-spec {(x x2) above} is a symbol instead of a cons, that symbol is the name of the slot and is bound in the let.