! Copyright (C) 2009 Joe Groff. ! See http://factorcode.org/license.txt for BSD license. USING: accessors assocs classes.tuple generalizations kernel locals quotations sequences ; IN: combinators.tuple > assoc at [ slot initial>> :> initial { n ndrop initial } >quotation ] unless* ; PRIVATE> MACRO:: nmake-tuple ( class assoc n -- quot ) class all-slots [ assoc n (tuple-slot-quot) ] map :> quots class :> \class { quots n ncleave \class boa } >quotation ; : make-tuple ( x class assoc -- tuple ) 1 nmake-tuple ; inline : 2make-tuple ( x y class assoc -- tuple ) 2 nmake-tuple ; inline : 3make-tuple ( x y z class assoc -- tuple ) 3 nmake-tuple ; inline