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