1 ! (c)2009 Joe Groff bsd license
2 USING: accessors assocs classes.tuple generalizations kernel
3 locals quotations sequences ;
8 :: (tuple-slot-quot) ( slot assoc n -- quot )
10 slot initial>> :> initial
11 { n ndrop initial } >quotation
16 MACRO:: nmake-tuple ( class assoc n -- )
17 class all-slots [ assoc n (tuple-slot-quot) ] map :> quots
18 class <wrapper> :> \class
19 { quots n ncleave \class boa } >quotation ;
21 : make-tuple ( x class assoc -- tuple )
22 1 nmake-tuple ; inline
24 : 2make-tuple ( x y class assoc -- tuple )
25 2 nmake-tuple ; inline
27 : 3make-tuple ( x y z class assoc -- tuple )
28 3 nmake-tuple ; inline