30 lines
		
	
	
		
			702 B
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			702 B
		
	
	
	
		
			Factor
		
	
	
| ! Copyright (C) 2006, 2007 Slava Pestov.
 | |
| ! See http://factorcode.org/license.txt for BSD license.
 | |
| USING: assocs kernel sequences sets ;
 | |
| IN: graphs
 | |
| 
 | |
| <PRIVATE
 | |
| 
 | |
| : nest ( vertex graph -- edges )
 | |
|     [ drop HS{ } clone ] cache ; inline
 | |
| 
 | |
| PRIVATE>
 | |
| 
 | |
| : add-vertex ( vertex edges graph -- )
 | |
|     [ nest adjoin ] curry with each ; inline
 | |
| 
 | |
| : remove-vertex ( vertex edges graph -- )
 | |
|     [ at delete ] curry with each ; inline
 | |
| 
 | |
| <PRIVATE
 | |
| 
 | |
|  : (closure) ( vertex set quot: ( vertex -- edges ) -- )
 | |
|      2over ?adjoin [
 | |
|          [ dip ] keep [ (closure) ] 2curry each
 | |
|      ] [ 3drop ] if ; inline recursive
 | |
| 
 | |
| PRIVATE>
 | |
| 
 | |
| : closure ( vertex quot: ( vertex -- edges ) -- set )
 | |
|     HS{ } clone [ swap (closure) ] keep ; inline
 |