]> gitweb.factorcode.org Git - factor.git/blob - extra/combinators/tuple/tuple.factor
Update some copyright headers to follow the current convention
[factor.git] / extra / combinators / tuple / tuple.factor
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 ;
5 IN: combinators.tuple
6
7 <PRIVATE
8
9 :: (tuple-slot-quot) ( slot assoc n -- quot )
10     slot name>> assoc at [
11         slot initial>> :> initial
12         { n ndrop initial } >quotation
13     ] unless* ;
14
15 PRIVATE>
16
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 ;
21
22 : make-tuple ( x class assoc -- tuple )
23     1 nmake-tuple ; inline
24
25 : 2make-tuple ( x y class assoc -- tuple )
26     2 nmake-tuple ; inline
27
28 : 3make-tuple ( x y z class assoc -- tuple )
29     3 nmake-tuple ; inline