diff --git a/core/classes/classes.factor b/core/classes/classes.factor index 6970f88767..cdc34d1276 100644 --- a/core/classes/classes.factor +++ b/core/classes/classes.factor @@ -130,9 +130,11 @@ GENERIC: implementors ( class/classes -- seq ) tri ] { } make ; -: class-usage ( class -- seq ) update-map get at ; +: class-usage ( class -- seq ) + update-map get at keys ; -: class-usages ( class -- seq ) [ class-usage ] closure keys ; +: class-usages ( class -- seq ) + [ class-usage ] closure sets:members ; M: class implementors implementors-map get at sets:members ; @@ -170,7 +172,7 @@ GENERIC: metaclass-changed ( use class -- ) : check-metaclass ( class metaclass -- usages/f ) over class? [ over "metaclass" word-prop eq? - [ drop f ] [ class-usage keys ] if + [ drop f ] [ class-usage ] if ] [ 2drop f ] if ; : ?define-symbol ( word -- ) diff --git a/core/classes/tuple/tuple.factor b/core/classes/tuple/tuple.factor index 18a44409a5..895302eaa3 100644 --- a/core/classes/tuple/tuple.factor +++ b/core/classes/tuple/tuple.factor @@ -298,7 +298,7 @@ PRIVATE> GENERIC: make-final ( class -- ) M: tuple-class make-final - [ dup class-usage keys ?metaclass-changed ] + [ dup class-usage ?metaclass-changed ] [ t "final" set-word-prop ] bi ; diff --git a/core/graphs/graphs-docs.factor b/core/graphs/graphs-docs.factor index a08a2a5bf9..7b6d20e7ba 100644 --- a/core/graphs/graphs-docs.factor +++ b/core/graphs/graphs-docs.factor @@ -1,4 +1,5 @@ -USING: assocs hashtables help.markup help.syntax kernel sequences ; +USING: assocs hashtables help.markup help.syntax kernel +sequences sets ; IN: graphs ARTICLE: "graphs" "Directed graph utilities" @@ -28,5 +29,5 @@ HELP: remove-vertex { $side-effects "graph" } ; HELP: closure -{ $values { "obj" object } { "quot" { $quotation "( obj -- assoc )" } } { "assoc" "a new assoc" } } +{ $values { "obj" object } { "quot" { $quotation "( obj -- assoc )" } } { "set" set } } { $description "Outputs a set of all vertices reachable from " { $snippet "vertex" } " via edges given by the quotation. The set always includes " { $snippet "vertex" } "." } ; diff --git a/core/graphs/graphs-tests.factor b/core/graphs/graphs-tests.factor index 90b0e93b7c..57424472e5 100644 --- a/core/graphs/graphs-tests.factor +++ b/core/graphs/graphs-tests.factor @@ -1,4 +1,5 @@ USING: graphs tools.test namespaces kernel sorting assocs ; +FROM: sets => members ; H{ } "g" set { 1 2 3 } "v" set @@ -14,7 +15,7 @@ H{ } "g" set [ { 2 3 4 5 } ] [ - 2 [ "g" get at ] closure keys natural-sort + 2 [ "g" get at keys ] closure members natural-sort ] unit-test H{ } "g" set diff --git a/core/graphs/graphs.factor b/core/graphs/graphs.factor index eed2a69c33..29f38fc53a 100644 --- a/core/graphs/graphs.factor +++ b/core/graphs/graphs.factor @@ -31,15 +31,12 @@ PRIVATE> -: closure ( obj quot -- assoc ) - H{ } clone [ swap (closure) ] keep ; inline +: closure ( obj quot -- set ) + HS{ } clone [ swap (closure) ] keep ; inline