30 lines
		
	
	
		
			785 B
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			785 B
		
	
	
	
		
			Factor
		
	
	
| ! 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
 | |
| 
 | |
| <PRIVATE
 | |
| 
 | |
| :: (tuple-slot-quot) ( slot assoc n -- quot )
 | |
|     slot name>> 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 <wrapper> :> \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
 |