1 ! Copyright (C) 2009 Joe Groff.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors assocs classes.tuple generalizations kernel
4 locals quotations sequences ;
9 :: (tuple-slot-quot) ( slot assoc n -- quot )
10 slot name>> assoc at [
11 slot initial>> :> initial
12 { n ndrop initial } >quotation
17 MACRO:: nmake-tuple ( class assoc n -- quot )
18 class all-slots [ assoc n (tuple-slot-quot) ] map :> quots
19 class <wrapper> :> \class
20 { quots n ncleave \class boa } >quotation ;
22 : make-tuple ( x class assoc -- tuple )
23 1 nmake-tuple ; inline
25 : 2make-tuple ( x y class assoc -- tuple )
26 2 nmake-tuple ; inline
28 : 3make-tuple ( x y z class assoc -- tuple )
29 3 nmake-tuple ; inline