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 ;
 |