27 lines
		
	
	
		
			649 B
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			649 B
		
	
	
	
		
			Factor
		
	
	
| ! Copyright (C) 2012 John Benediktsson
 | |
| ! See http://factorcode.org/license.txt for BSD license
 | |
| 
 | |
| USING: arrays assocs assocs.private kernel sequences ;
 | |
| 
 | |
| IN: assocs.extras
 | |
| 
 | |
| : assoc-harvest ( assoc -- assoc' )
 | |
|     [ nip empty? not ] assoc-filter ; inline
 | |
| 
 | |
| : assoc-sift ( assoc -- assoc' )
 | |
|     [ nip ] assoc-filter ; inline
 | |
| 
 | |
| : deep-at ( assoc seq -- value/f )
 | |
|     [ swap at ] each ; inline
 | |
| 
 | |
| : zip-as ( keys values exemplar -- assoc )
 | |
|     dup sequence? [
 | |
|         [ 2array ] swap 2map-as
 | |
|     ] [
 | |
|         [ dup length ] dip new-assoc
 | |
|         [ [ set-at ] with-assoc 2each ] keep
 | |
|     ] if ; inline
 | |
| 
 | |
| : substitute! ( seq assoc -- seq )
 | |
|     substituter map! ;
 |