TUPLE: adjacency-list { vertices array } ; : ( n -- adjacency-list ) -1 nil cons adjacency-list boa ; :: add-edge ( from to adjacency-list -- adjacency-list ) from adjacency-list vertices>> array-nth dup car -1 = [ drop to nil cons from adjacency-list vertices>> set-array-nth ] [ to nil cons lappend ] if ;