22 lines
		
	
	
		
			560 B
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			22 lines
		
	
	
		
			560 B
		
	
	
	
		
			Factor
		
	
	
! Copyright (C) 2008 Slava Pestov.
 | 
						|
! See http://factorcode.org/license.txt for BSD license.
 | 
						|
USING: accessors models kernel assocs ;
 | 
						|
IN: models.mapping
 | 
						|
 | 
						|
TUPLE: mapping < model assoc ;
 | 
						|
 | 
						|
: <mapping> ( models -- mapping )
 | 
						|
    f mapping new-model
 | 
						|
        over values >>dependencies
 | 
						|
        swap >>assoc ;
 | 
						|
 | 
						|
M: mapping model-changed
 | 
						|
    nip [ assoc>> [ value>> ] assoc-map ] keep set-model ;
 | 
						|
 | 
						|
M: mapping model-activated
 | 
						|
    dup model-changed ;
 | 
						|
 | 
						|
M: mapping update-model
 | 
						|
    [ value>> ] [ assoc>> ] bi
 | 
						|
    [ swapd at set-model ] curry assoc-each ;
 |