changer: Add changer vocab.
							parent
							
								
									114ba4733a
								
							
						
					
					
						commit
						923df44ec3
					
				| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
Doug Coleman
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
! Copyright (C) 2015 Doug Coleman.
 | 
			
		||||
! See http://factorcode.org/license.txt for BSD license.
 | 
			
		||||
USING: changer math tools.test ;
 | 
			
		||||
IN: changer.tests
 | 
			
		||||
 | 
			
		||||
TUPLE: changer-tester test-slot ;
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
    T{ changer-tester f 1 }
 | 
			
		||||
} [ T{ changer-tester f 0 } [ 1 + ] change: test-slot ] unit-test
 | 
			
		||||
 | 
			
		||||
: change-test-slot ( obj -- obj )
 | 
			
		||||
    [ 1 + ] change: test-slot ;
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
    T{ changer-tester f 1 }
 | 
			
		||||
} [ T{ changer-tester f 0 } change-test-slot ] unit-test
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,11 @@
 | 
			
		|||
! Copyright (C) 2015 Doug Coleman.
 | 
			
		||||
! See http://factorcode.org/license.txt for BSD license.
 | 
			
		||||
USING: fry kernel lexer macros quotations sequences words ;
 | 
			
		||||
IN: changer
 | 
			
		||||
 | 
			
		||||
MACRO: inline-changer ( name -- quot' )
 | 
			
		||||
    [ ">>" append ] [ ">>" prepend ] bi
 | 
			
		||||
    [ "accessors" lookup-word 1quotation ] bi@
 | 
			
		||||
    '[ over [ [ @ ] dip call ] dip swap @ ] ;
 | 
			
		||||
 | 
			
		||||
SYNTAX: change: scan-token '[ _ inline-changer ] append! ;
 | 
			
		||||
		Loading…
	
		Reference in New Issue