[ drop ] [ no-tuple-class ] if ;
: tuple>array ( tuple -- array )
- dup tuple-layout
- [ layout-size swap [ array-nth ] curry map ] keep
- layout-class prefix ;
-
- : >tuple ( seq -- tuple )
- dup first tuple-layout <tuple> [
- >r 1 tail-slice dup length r>
- [ tuple-size min ] keep
- [ set-array-nth ] curry
- 2each
- prepare-tuple>array >r copy-tuple-slots r> layout-class add* ;
++ prepare-tuple>array >r copy-tuple-slots r> layout-class prefix ;
+
+ : tuple-slots ( tuple -- array )
+ prepare-tuple>array drop copy-tuple-slots ;
+
+ : slots>tuple ( tuple class -- array )
+ tuple-layout <tuple> [
+ [ tuple-size ] [ [ set-array-nth ] curry ] bi 2each
] keep ;
+ : >tuple ( tuple -- array )
+ unclip slots>tuple ;
+
: slot-names ( class -- seq )
- "slots" word-prop [ name>> ] map ;
+ "slot-names" word-prop ;
<PRIVATE