! Copyright (C) 2006, 2007 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: assocs kernel sequences sets ; IN: graphs : add-vertex ( vertex edges graph -- ) [ [ nest dupd set-at ] curry with each ] if-graph ; inline : add-vertex* ( vertex edges graph -- ) [ swapd [ [ rot ] dip nest set-at ] 2curry assoc-each ] if-graph ; inline : remove-vertex ( vertex edges graph -- ) [ [ at delete-at ] curry with each ] if-graph ; inline : remove-vertex* ( vertex edges graph -- ) [ swapd [ [ rot ] dip at delete-at drop ] 2curry assoc-each ] if-graph ; inline : closure ( vertex quot: ( vertex -- assoc ) -- assoc ) H{ } clone [ swap (closure) ] keep ; inline