]> gitweb.factorcode.org Git - factor.git/commitdiff
Moving new-sets to sets
authorDaniel Ehrenberg <littledan@Macintosh-122.local>
Fri, 26 Feb 2010 21:01:01 +0000 (16:01 -0500)
committerDaniel Ehrenberg <littledan@Macintosh-122.local>
Fri, 26 Feb 2010 21:01:01 +0000 (16:01 -0500)
56 files changed:
basis/bit-sets/bit-sets-tests.factor
basis/bit-sets/bit-sets.factor
basis/compiler/cfg/alias-analysis/alias-analysis.factor
basis/compiler/cfg/dce/dce.factor
basis/compiler/cfg/def-use/def-use.factor
basis/compiler/cfg/dominance/dominance.factor
basis/compiler/cfg/linear-scan/assignment/assignment.factor
basis/compiler/cfg/linearization/order/order.factor
basis/compiler/cfg/liveness/ssa/ssa.factor
basis/compiler/cfg/loop-detection/loop-detection.factor
basis/compiler/cfg/representations/preferred/preferred.factor
basis/compiler/cfg/representations/representations.factor
basis/compiler/cfg/rpo/rpo.factor
basis/compiler/cfg/ssa/construction/construction.factor
basis/compiler/cfg/ssa/construction/tdmsc/tdmsc.factor
basis/compiler/cfg/ssa/destruction/destruction.factor
basis/compiler/cfg/ssa/liveness/liveness.factor
basis/compiler/cfg/stacks/local/local.factor
basis/compiler/cfg/write-barrier/write-barrier.factor
basis/compiler/codegen/codegen.factor
basis/compiler/tree/checker/checker.factor
basis/compiler/tree/dead-code/branches/branches.factor
basis/compiler/tree/dead-code/liveness/liveness.factor
basis/compiler/tree/def-use/def-use.factor
basis/compiler/tree/def-use/simplified/simplified.factor
basis/compiler/tree/escape-analysis/allocations/allocations.factor
basis/compiler/tree/modular-arithmetic/modular-arithmetic.factor
basis/compiler/tree/propagation/propagation-tests.factor
basis/compiler/tree/propagation/transforms/transforms.factor
basis/compiler/tree/recursive/recursive.factor
basis/help/markup/markup.factor
basis/inspector/inspector.factor
basis/peg/peg.factor
basis/prettyprint/backend/backend.factor
basis/prettyprint/prettyprint.factor
basis/prettyprint/sections/sections.factor
basis/regexp/nfa/nfa.factor
basis/see/see.factor
basis/stack-checker/backend/backend.factor
basis/stack-checker/dependencies/dependencies.factor
basis/stack-checker/transforms/transforms.factor
basis/ui/gestures/gestures.factor
basis/ui/tools/listener/listener.factor
basis/unicode/data/data.factor
basis/vocabs/refresh/refresh.factor
core/classes/algebra/algebra.factor
core/classes/classes.factor
core/classes/tuple/parser/parser.factor
core/combinators/combinators.factor
core/compiler/units/units.factor
core/destructors/destructors.factor
core/generic/generic.factor
core/hash-sets/hash-sets-tests.factor
core/hash-sets/hash-sets.factor
core/sets/sets-tests.factor
core/sets/sets.factor

index 26010a33376434c51304eb9c7cb4de46b367dd88..4e97e703d0017fa939a617c53ad3df071cfb23bb 100644 (file)
@@ -1,4 +1,4 @@
-USING: bit-sets tools.test new-sets kernel bit-arrays ;
+USING: bit-sets tools.test sets kernel bit-arrays ;
 IN: bit-sets.tests
 
 [ T{ bit-set f ?{ t f t f t f } } ] [
index a3cac64295e5f3e047334d615a876ad51672e014..9d3d09ec1b2f97bba05dfa136368b9895e27f774 100644 (file)
@@ -1,6 +1,6 @@
 ! Copyright (C) 2009 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: kernel accessors sequences byte-arrays bit-arrays math hints new-sets ;
+USING: kernel accessors sequences byte-arrays bit-arrays math hints sets ;
 IN: bit-sets
 
 TUPLE: bit-set { table bit-array read-only } ;
index 9fffa0eed247093ad1c4e023d4a36a349fa5326c..810831f776bfc694c4ec25c8b68dd7c5db2eaf54 100644 (file)
@@ -12,6 +12,7 @@ compiler.cfg.registers
 compiler.cfg.comparisons
 compiler.cfg.instructions
 compiler.cfg.representations.preferred ;
+FROM: namespaces => set ;
 IN: compiler.cfg.alias-analysis
 
 ! We try to eliminate redundant slot operations using some simple heuristics.
index c8010d9aa85dcaf68258e0373da56188d8a38d40..b4fcd018f491849bf7140e3c5453a72f02fef7f5 100644 (file)
@@ -2,7 +2,7 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: accessors assocs kernel namespaces sequences
 compiler.cfg.instructions compiler.cfg.def-use
-compiler.cfg.rpo compiler.cfg.predecessors hash-sets new-sets ;
+compiler.cfg.rpo compiler.cfg.predecessors hash-sets sets ;
 FROM: namespaces => set ;
 IN: compiler.cfg.dce
 
index 54cff2ccaa7aeb3bcac9c5321b223c3e57f601f8..3838a0d1b9ed2322455b6dd6546a3af9369fe230 100644 (file)
@@ -5,6 +5,7 @@ compiler.units fry generalizations generic kernel locals
 namespaces quotations sequences sets slots words
 compiler.cfg.instructions compiler.cfg.instructions.syntax
 compiler.cfg.rpo ;
+FROM: namespaces => set ;
 IN: compiler.cfg.def-use
 
 GENERIC: defs-vreg ( insn -- vreg/f )
index d21e81526e426d2299f6475b9cfe36f7bc503c8d..71dc12f6a14f44bb84775a414d9aa1bbd8059cd7 100644 (file)
@@ -3,6 +3,7 @@
 USING: accessors assocs combinators sets math fry kernel math.order
 dlists deques vectors namespaces sequences sorting locals
 compiler.cfg.rpo compiler.cfg.predecessors ;
+FROM: namespaces => set ;
 IN: compiler.cfg.dominance
 
 ! Reference:
@@ -103,4 +104,4 @@ PRIVATE>
         [ accum push ]
         [ dom-children work-list push-all-front ] bi
     ] slurp-deque
-    accum ;
\ No newline at end of file
+    accum ;
index f69db1deea1dd3748ee7041ab29af63fcd5ef79f..6acb9169ec730996d88b4d9cff035c13b9c5de8b 100644 (file)
@@ -13,6 +13,7 @@ compiler.cfg.linearization.order
 compiler.cfg.linear-scan.allocation
 compiler.cfg.linear-scan.allocation.state
 compiler.cfg.linear-scan.live-intervals ;
+FROM: namespaces => set ;
 IN: compiler.cfg.linear-scan.assignment
 
 ! This contains both active and inactive intervals; any interval
index f48816d1b91ec3751e33f69f7df9f4070ce08eb3..166a0f0d5014c05ec2487aa6e4d14ce1c7c3c901 100644 (file)
@@ -4,7 +4,7 @@ USING: accessors assocs deques dlists kernel make sorting
 namespaces sequences combinators combinators.short-circuit
 fry math compiler.cfg.rpo compiler.cfg.utilities
 compiler.cfg.loop-detection compiler.cfg.predecessors
-new-sets hash-sets ;
+sets hash-sets ;
 FROM: namespaces => set ;
 IN: compiler.cfg.linearization.order
 
index 81263c8e9ac3ddcaef1863fc1f8ff6ca15c5b7f7..5215c9c4874f4953f0d284589b579f033052f741 100644 (file)
@@ -4,6 +4,7 @@ USING: kernel namespaces deques accessors sets sequences assocs fry
 hashtables dlists compiler.cfg.def-use compiler.cfg.instructions
 compiler.cfg.rpo compiler.cfg.liveness compiler.cfg.utilities
 compiler.cfg.predecessors ;
+FROM: namespaces => set ;
 IN: compiler.cfg.liveness.ssa
 
 ! TODO: merge with compiler.cfg.liveness
@@ -59,4 +60,4 @@ SYMBOL: work-list
 
 : live-in? ( vreg bb -- ? ) live-in key? ;
 
-: live-out? ( vreg bb -- ? ) live-out key? ;
\ No newline at end of file
+: live-out? ( vreg bb -- ? ) live-out key? ;
index 73b99ee132144643ffe3b203b867625d9e18d36d..2e2dab00f1e1019902371934023fe40fc62dd6a6 100644 (file)
@@ -2,6 +2,7 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: accessors assocs combinators deques dlists fry kernel
 namespaces sequences sets compiler.cfg compiler.cfg.predecessors ;
+FROM: namespaces => set ;
 IN: compiler.cfg.loop-detection
 
 TUPLE: natural-loop header index ends blocks ;
index 726521cfe1922b4fbfda67de04f296f05f8b319e..3be96515de4727509735550a962e0cad8a77cd87 100644 (file)
@@ -5,6 +5,7 @@ words sets combinators generalizations cpu.architecture compiler.units
 compiler.cfg.utilities compiler.cfg compiler.cfg.rpo
 compiler.cfg.instructions compiler.cfg.def-use ;
 FROM: compiler.cfg.instructions.syntax => insn-def-slot insn-use-slots insn-temp-slots scalar-rep ;
+FROM: namespaces => set ;
 IN: compiler.cfg.representations.preferred
 
 GENERIC: defs-vreg-rep ( insn -- rep/f )
index 005fe8c90b3b1a887f102766860862dbfc734d56..eaea3b94c86c21847986087e121638f28c64eaef 100644 (file)
@@ -15,6 +15,7 @@ compiler.cfg.utilities
 compiler.cfg.loop-detection
 compiler.cfg.renaming.functor
 compiler.cfg.representations.preferred ;
+FROM: namespaces => set ;
 IN: compiler.cfg.representations
 
 ! Virtual register representation selection.
index b6322730ee72bd2a80ff881a8e95f5e17dd0a901..e99b9c6c1e8ddcd4557c3d13cef36171cd73a525 100644 (file)
@@ -2,6 +2,7 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: kernel accessors namespaces make math sequences sets
 assocs fry compiler.cfg compiler.cfg.instructions ;
+FROM: namespaces => set ;
 IN: compiler.cfg.rpo
 
 SYMBOL: visited
@@ -42,4 +43,4 @@ SYMBOL: visited
     dupd '[ _ optimize-basic-block ] each-basic-block ; inline
 
 : needs-post-order ( cfg -- cfg' )
-    dup post-order drop ;
\ No newline at end of file
+    dup post-order drop ;
index 7662b8ab01093fd288fd340b5b998ed220a9fa2d..7cd85e5fbebd4431746322aa0e2f7ea748f13889 100644 (file)
@@ -12,6 +12,7 @@ compiler.cfg.instructions
 compiler.cfg.renaming
 compiler.cfg.renaming.functor
 compiler.cfg.ssa.construction.tdmsc ;
+FROM: namespaces => set ;
 IN: compiler.cfg.ssa.construction
 
 ! The phi placement algorithm is implemented in
@@ -135,4 +136,4 @@ PRIVATE>
         [ compute-defs compute-phi-nodes insert-phi-nodes ]
         [ rename ]
         [ ]
-    } cleave ;
\ No newline at end of file
+    } cleave ;
index 7601ccc9bb66ee72c10dc6a0cc4024a7ec012c71..4c2210c493b679bb659dd64cf911da3f89329eda 100644 (file)
@@ -1,7 +1,7 @@
 ! Copyright (C) 2009 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: accessors arrays assocs bit-arrays bit-sets fry
-hashtables hints kernel locals math namespaces sequences new-sets
+hashtables hints kernel locals math namespaces sequences sets
 compiler.cfg compiler.cfg.dominance compiler.cfg.rpo ;
 FROM: namespaces => set ;
 IN: compiler.cfg.ssa.construction.tdmsc
index d93045da550acb9dbc496a7e7fc81ccddd391ed7..8b766c8114330bd542f4dd3584b56885ea07ca2e 100644 (file)
@@ -15,6 +15,7 @@ compiler.cfg.ssa.interference
 compiler.cfg.ssa.interference.live-ranges
 compiler.cfg.utilities
 compiler.utilities ;
+FROM: namespaces => set ;
 IN: compiler.cfg.ssa.destruction
 
 ! Maps vregs to leaders.
index 7847de28fcae16c39680206df8fbf6440731d28a..6e84b8b77df38fbefaa8146d34b6cc63c999dda8 100644 (file)
@@ -6,6 +6,7 @@ compiler.cfg.rpo
 compiler.cfg.dominance
 compiler.cfg.def-use
 compiler.cfg.instructions ;
+FROM: namespaces => set ;
 IN: compiler.cfg.ssa.liveness
 
 ! Liveness checking on SSA IR, as described in
index 30a2c4c13f2fe43e48450c293857d068bb03fc84..95feb4c0340af5b86bfff9be527ce4c576a54599 100644 (file)
@@ -8,6 +8,7 @@ compiler.cfg.instructions
 compiler.cfg.registers
 compiler.cfg.stacks.height
 compiler.cfg.parallel-copy ;
+FROM: namespaces => set ;
 IN: compiler.cfg.stacks.local
 
 ! Local stack analysis. We build three sets for every basic block
@@ -106,4 +107,4 @@ M: rs-loc translate-local-loc n>> current-height get r>> - <rs-loc> ;
 
 : peek-set ( bb -- assoc ) peek-sets get at ;
 : replace-set ( bb -- assoc ) replace-sets get at ;
-: kill-set ( bb -- assoc ) kill-sets get at ;
\ No newline at end of file
+: kill-set ( bb -- assoc ) kill-sets get at ;
index 523f7c6d1ced65c45e05869eb5f166e049af2fd2..cecf5f7251fc87e72d37660405519c6e1060d9d2 100644 (file)
@@ -3,6 +3,7 @@
 USING: accessors assocs combinators.short-circuit
 compiler.cfg.instructions compiler.cfg.rpo kernel namespaces
 sequences sets ;
+FROM: namespaces => set ;
 IN: compiler.cfg.write-barrier
 
 SYMBOL: fresh-allocations
index 963ed0ab28c63967fed93efea1f7ff3d83496288..3edfcc565b39f3792d2b8354a92a9578cc730333 100755 (executable)
@@ -16,6 +16,7 @@ compiler.cfg.registers
 compiler.cfg.builder
 compiler.codegen.fixup
 compiler.utilities ;
+FROM: namespaces => set ;
 IN: compiler.codegen
 
 SYMBOL: insn-counts
index b3f01c8c01b02f1764071695a791dc3a1c3bf0de..a3a19b8f4d6bf86c614d8dd0d06144968b6ede3b 100644 (file)
@@ -7,6 +7,7 @@ compiler.tree
 compiler.tree.def-use
 compiler.tree.recursive
 compiler.tree.combinators ;
+FROM: namespaces => set ;
 IN: compiler.tree.checker
 
 ! Check some invariants; this can help catch compiler bugs.
index d1fdf6359a19322c472b5422b4c7365105487a2c..5b5249f8e44d6b8c751d5c6089f41875c13ba54a 100644 (file)
@@ -4,6 +4,7 @@ USING: sequences namespaces kernel accessors assocs sets fry
 arrays combinators columns stack-checker.backend
 stack-checker.branches compiler.tree compiler.tree.combinators
 compiler.tree.dead-code.liveness compiler.tree.dead-code.simple ;
+FROM: namespaces => set ;
 IN: compiler.tree.dead-code.branches
 
 M: #if mark-live-values* look-at-inputs ;
index 9ece5d340b60d497c1ee91b65483d48f6e3b277e..7e437cbc4e859d5926dfd7b8dfc5cf72f1a63391 100644 (file)
@@ -4,6 +4,7 @@ USING: fry accessors namespaces assocs deques search-deques
 dlists kernel sequences compiler.utilities words sets
 stack-checker.branches compiler.tree compiler.tree.def-use
 compiler.tree.combinators ;
+FROM: namespaces => set ;
 IN: compiler.tree.dead-code.liveness
 
 SYMBOL: work-list
index 872b6131c9bd453a9efa315aef58726f288adb7b..a1c316140dc19e3c3621de4e0320b7abcb568193 100644 (file)
@@ -6,6 +6,7 @@ stack-checker.state
 stack-checker.branches
 compiler.tree
 compiler.tree.combinators ;
+FROM: namespaces => set ;
 IN: compiler.tree.def-use
 
 SYMBOL: def-use
index c2fb74c97e285d2616414e67740fb082c23a85ee..0061e8cffb471b1d74a54a1f96db697907ed7784 100644 (file)
@@ -2,6 +2,7 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: sequences kernel fry vectors accessors namespaces assocs sets
 stack-checker.branches compiler.tree compiler.tree.def-use ;
+FROM: namespaces => set ;
 IN: compiler.tree.def-use.simplified
 
 ! Simplified def-use follows chains of copies.
index 5291c5e81f69195f3a93ff0c79ce366e6ab92a76..015b6ad626ac3d0cc70c6287814b769c76ecf65f 100644 (file)
@@ -2,6 +2,7 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: accessors assocs namespaces sequences kernel math
 combinators sets disjoint-sets fry stack-checker.values ;
+FROM: namespaces => set ;
 IN: compiler.tree.escape-analysis.allocations
 
 ! A map from values to classes. Only for #introduce outputs
index ece2ed80f3d4af7c1622f04d0803e28d2e243482..961ce1ecd715fd2822003729540287452b3f33d4 100644 (file)
@@ -9,6 +9,7 @@ compiler.tree.propagation.info
 compiler.tree.def-use
 compiler.tree.def-use.simplified
 compiler.tree.late-optimizations ;
+FROM: namespaces => set ;
 IN: compiler.tree.modular-arithmetic
 
 ! This is a late-stage optimization.
index 8cc91538d62b0433947d87bcf514086139a0e1de..444a4247660fe2dc20ead127694e161e12226fda 100644 (file)
@@ -8,7 +8,7 @@ layouts compiler.tree.propagation.info compiler.tree.def-use
 compiler.tree.debugger compiler.tree.checker slots.private words
 hashtables classes assocs locals specialized-arrays system
 sorting math.libm math.floats.private math.integers.private
-math.intervals quotations effects alien alien.data new-sets ;
+math.intervals quotations effects alien alien.data sets ;
 FROM: math => float ;
 SPECIALIZED-ARRAY: double
 SPECIALIZED-ARRAY: void*
index b6fda4d5b982e900be9040b7f69288dc8ed4bb3b..4f0eea9cbbc4cc03d8fee22a973de752dad616d2 100644 (file)
@@ -3,13 +3,13 @@
 USING: alien.c-types kernel sequences words fry generic accessors
 classes.tuple classes classes.algebra definitions
 stack-checker.dependencies quotations classes.tuple.private math
-math.partial-dispatch math.private math.intervals new-sets.private
+math.partial-dispatch math.private math.intervals sets.private
 math.floats.private math.integers.private layouts math.order
 vectors hashtables combinators effects generalizations assocs
-new-sets combinators.short-circuit sequences.private locals growable
+sets combinators.short-circuit sequences.private locals growable
 stack-checker namespaces compiler.tree.propagation.info ;
 FROM: math => float ;
-FROM: new-sets => set ;
+FROM: sets => set ;
 IN: compiler.tree.propagation.transforms
 
 \ equal? [
index bc6243e1381d795b2a937324d12231bd824c55dd..0771b978a71fa43880c4a20aa59a9b0e9d0a1f86 100644 (file)
@@ -2,6 +2,7 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: kernel assocs arrays namespaces accessors sequences deques fry
 search-deques dlists combinators.short-circuit make sets compiler.tree ;
+FROM: namespaces => set ;
 IN: compiler.tree.recursive
 
 TUPLE: call-site tail? node label ;
index f951f30b2f673f8c156fe37e422bc9e8e884faa6..dd43c84864c1f041513a5ade0ff1bb69eaae1f87 100644 (file)
@@ -8,6 +8,7 @@ prettyprint.stylesheet quotations see sequences sets slots
 sorting splitting strings vectors vocabs vocabs.loader words
 words.symbol ;
 FROM: prettyprint.sections => with-pprint ;
+FROM: namespaces => set ;
 IN: help.markup
 
 PREDICATE: simple-element < array
index 2aa7cd218e02b051ca1ac66b2612bbefe620b2d1..92d61ca7cfa921c023c2e117cb613dc84786e393 100644 (file)
@@ -5,6 +5,7 @@ namespaces prettyprint prettyprint.custom prettyprint.sections
 sequences strings io.styles vectors words quotations mirrors
 splitting math.parser classes vocabs sets sorting summary
 debugger continuations fry combinators ;
+FROM: namespaces => set ;
 IN: inspector
 
 SYMBOL: +number-rows+
index a180713ccfd437e4f6d6a6dd3a76049d735cf552..cc480c30b2cfe56e1c36757ffae06e225bb3806e 100644 (file)
@@ -5,6 +5,7 @@ io vectors arrays math.parser math.order combinators classes
 sets unicode.categories compiler.units parser effects.parser
 words quotations memoize accessors locals splitting
 combinators.short-circuit generalizations ;
+FROM: namespaces => set ;
 IN: peg
 
 TUPLE: parse-result remaining ast ;
index aead51a4e3ec8e4ab740aef872257448e49d58f7..7d0cb4057673bb8346b33c7f7819c38a9ac3649a 100644 (file)
@@ -7,7 +7,7 @@ io.pathnames io.styles kernel make math math.order math.parser
 namespaces prettyprint.config prettyprint.custom
 prettyprint.sections prettyprint.stylesheet quotations sbufs
 sequences strings vectors words words.symbol hash-sets ;
-FROM: new-sets => members ;
+FROM: sets => members ;
 IN: prettyprint.backend
 
 M: effect pprint* effect>string "(" ")" surround text ;
index 23cf956a1d71afa3364c4c03b22d8bbd6a1bfefa..249a6e0a57d67c026fb496a2455b5cc784205342 100644 (file)
@@ -5,6 +5,7 @@ io.streams.string io.styles kernel make math math.parser namespaces
 parser prettyprint.backend prettyprint.config prettyprint.custom
 prettyprint.sections quotations sequences sorting strings vocabs
 vocabs.prettyprint words sets generic ;
+FROM: namespaces => set ;
 IN: prettyprint
 
 : with-use ( obj quot -- )
index 6f5f61f688ef3ae019c6524e3e4b13099ec5a462..cd606667fdf1c2d482632c0a7268856e8ae68b55 100644 (file)
@@ -4,6 +4,7 @@ USING: arrays generic hashtables io kernel math assocs
 namespaces make sequences strings io.styles vectors words
 prettyprint.config splitting classes continuations
 accessors sets vocabs.parser combinators vocabs ;
+FROM: namespaces => set ;
 IN: prettyprint.sections
 
 ! State
index 35edcf328af1afea0b564a3eceb95a087c715df5..cc430f2de1f5c558e536c0714f0ca76f7742138a 100644 (file)
@@ -5,6 +5,7 @@ sequences fry quotations math.order math.ranges vectors
 unicode.categories regexp.transition-tables words sets hashtables
 combinators.short-circuit unicode.data regexp.ast
 regexp.classes memoize ;
+FROM: namespaces => set ;
 IN: regexp.nfa
 
 ! This uses unicode.data for ch>upper and ch>lower
index 326e0512191a4d5829312aefbb0c8e6b6b6f3cf5..bb6ae5cf2de51ce4839638f6ce081fcd51aba3f0 100644 (file)
@@ -8,6 +8,8 @@ io.streams.string io.styles kernel make namespaces prettyprint
 prettyprint.backend prettyprint.config prettyprint.custom
 prettyprint.sections sequences sets sorting strings summary words
 words.symbol words.constant words.alias vocabs slots ;
+FROM: namespaces => set ;
+FROM: classes => members ;
 IN: see
 
 GENERIC: synopsis* ( defspec -- )
index 8de930a6cd7672cdab4eabebb51f1c36491aed64..ddb1fd0021b75d878dc74fa03d3dd3efff78e72f 100644 (file)
@@ -6,6 +6,7 @@ continuations assocs combinators compiler.errors accessors math.order
 definitions sets hints macros stack-checker.state
 stack-checker.visitor stack-checker.errors stack-checker.values
 stack-checker.recursive-state stack-checker.dependencies summary ;
+FROM: namespaces => set ;
 IN: stack-checker.backend
 
 : push-d ( obj -- ) meta-d push ;
index e2f7c5759301cdd4a3ce908883221d13d781abef..dcfb3db6bf2b69a1e98754b3594149607ff35447 100644 (file)
@@ -5,6 +5,7 @@ generic kernel math namespaces sequences words sets
 combinators.short-circuit classes.tuple alien.c-types ;
 FROM: classes.tuple.private => tuple-layout ;
 FROM: assocs => change-at ;
+FROM: namespaces => set ;
 IN: stack-checker.dependencies
 
 ! Words that the current quotation depends on
index cf32792a2e9a2d869f38346602d2142aa0bb08f4..9f966bd8b823f07c200fe0ae81e5c14d3acf4993 100644 (file)
@@ -9,6 +9,7 @@ sequences.private generalizations stack-checker.backend
 stack-checker.state stack-checker.visitor stack-checker.errors
 stack-checker.values stack-checker.recursive-state
 stack-checker.dependencies ;
+FROM: namespaces => set ;
 IN: stack-checker.transforms
 
 : call-transformer ( stack quot -- newquot )
index f33b6ec6da8ebb38cf21cec403e38ed90c23fc7e..30c96335cc12dcfe682f2ba8318f5cdba9608b98 100644 (file)
@@ -5,6 +5,7 @@ namespaces make sequences words strings system hashtables math.parser
 math.vectors classes.tuple classes boxes calendar alarms combinators
 sets columns fry deques ui.gadgets ui.gadgets.private ascii
 combinators.short-circuit ;
+FROM: namespaces => set ;
 IN: ui.gestures
 
 : get-gesture-handler ( gesture gadget -- quot )
index 2a948fddc01342b2ce006e44ef7f67dfdb846dbc..53d3bec56e4088def4cdf3d880219c6d930716a3 100644 (file)
@@ -16,6 +16,7 @@ ui.tools.listener.completion ui.tools.listener.popups
 ui.tools.listener.history ui.images ui.tools.error-list
 tools.errors.model ;
 FROM: source-files.errors => all-errors ;
+FROM: namespaces => set ;
 IN: ui.tools.listener
 
 ! If waiting is t, we're waiting for user input, and invoking
index 24dfba6be02dab57ec4a1f89bd091c22d67b7529..85b59de750416814c85613eb0a3507b991f5b177 100644 (file)
@@ -6,6 +6,7 @@ math.parser hash2 math.order byte-arrays namespaces
 compiler.units parser io.encodings.ascii values interval-maps
 ascii sets combinators locals math.ranges sorting make
 strings.parser io.encodings.utf8 memoize simple-flat-file ;
+FROM: namespaces => set ;
 IN: unicode.data
 
 <PRIVATE
index 9ec89e3102337eab0d66a1835a8f0167b3ec9919..3dc67712dea31a6bb50293297c80640a38abba3e 100644 (file)
@@ -3,6 +3,7 @@
 USING: accessors assocs checksums checksums.crc32
 io.encodings.utf8 io.files kernel namespaces sequences sets
 source-files vocabs vocabs.errors vocabs.loader ;
+FROM: namespaces => set ;
 IN: vocabs.refresh
 
 : source-modified? ( path -- ? )
@@ -88,4 +89,4 @@ SYMBOL: modified-docs
 
 : refresh ( prefix -- ) to-refresh do-refresh ;
 
-: refresh-all ( -- ) "" refresh ;
\ No newline at end of file
+: refresh-all ( -- ) "" refresh ;
index f9aaf3eaa571ffec708c393ffa995232ba1d023c..96fa34314ea06d836e17dc65f63b6ac5fbc98e5a 100644 (file)
@@ -3,6 +3,7 @@
 USING: kernel classes classes.private combinators accessors
 sequences arrays vectors assocs namespaces words sorting layouts
 math hashtables kernel.private sets math.order ;
+FROM: classes => members ;
 IN: classes.algebra
 
 <PRIVATE
index 28f0b192ee209dba6d286f4d6dc8d554349e75de..623368d6fbe8e987484e800ebef6044770770e40 100644 (file)
@@ -4,6 +4,7 @@ USING: accessors arrays definitions assocs kernel kernel.private
 slots.private namespaces make sequences strings words words.symbol
 vectors math quotations combinators sorting effects graphs
 vocabs sets ;
+FROM: namespaces => set ;
 IN: classes
 
 ERROR: bad-inheritance class superclass ;
index 8527275667c59057aefa6db3f3252abde4872a28..7482cce048b1620b5cf046cd6a4778fcb22330bd 100644 (file)
@@ -1,6 +1,6 @@
 ! Copyright (C) 2008, 2010 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors kernel new-sets namespaces make sequences parser
+USING: accessors kernel sets namespaces make sequences parser
 lexer combinators words classes.parser classes.tuple arrays
 slots math assocs parser.notes classes classes.algebra ;
 IN: classes.tuple.parser
index 7b9481825bdd8a68cbb08822bd8ed9ad59d54bfa..ce0d04c73c0e6f47940962df6ca89a45bc67fe31 100644 (file)
@@ -147,7 +147,7 @@ ERROR: no-case object ;
 : contiguous-range? ( keys -- ? )
     dup [ fixnum? ] all? [
         dup all-unique? [
-            [ prune length ]
+            [ length ]
             [ [ supremum ] [ infimum ] bi - ]
             bi - 1 =
         ] [ drop f ] if
index b024ed2c65c4b7843c176d28d845a085c7dc8d75..ffbdbefbf2806a4b9dfd64d318603fb68ca73699 100644 (file)
@@ -4,6 +4,7 @@ USING: accessors arrays kernel continuations assocs namespaces
 sequences words vocabs definitions hashtables init sets math
 math.order classes classes.private classes.algebra classes.tuple
 classes.tuple.private generic source-files.errors kernel.private ;
+FROM: namespaces => set ;
 IN: compiler.units
 
 SYMBOL: old-definitions
index ac3751e32ed8bf40fc96656de69ab7b935f5e701..e6d78fa03e393cf5afc96ae863679520de80b4fe 100644 (file)
@@ -2,6 +2,7 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: accessors continuations kernel namespaces make
 sequences vectors sets assocs init math ;
+FROM: namespaces => set ;
 IN: destructors
 
 SYMBOL: disposables
index 0c626ac1d6105d1a8d305cb3fa8684fb6f103263..a733ac90fa3133a16ba24d600ebf722f0e49870a 100644 (file)
@@ -4,6 +4,7 @@ USING: accessors words kernel sequences namespaces make assocs
 hashtables definitions kernel.private classes classes.private
 classes.algebra quotations arrays vocabs effects combinators
 sets ;
+FROM: namespaces => set ;
 IN: generic
 
 ! Method combination protocol
index 2eef2bd30953098faa88a4b5b9c5ac02af95cc91..5b7ffafc8b9500fc4b5973fad873a727eb10080c 100644 (file)
@@ -1,6 +1,6 @@
 ! Copyright (C) 2010 Daniel Ehrenberg
 ! See http://factorcode.org/license.txt for BSD license.
-USING: new-sets tools.test kernel sorting prettyprint hash-sets ;
+USING: sets tools.test kernel sorting prettyprint hash-sets ;
 IN: hash-sets.tests
 
 [ { 1 2 3 } ] [ HS{ 1 2 3 } members natural-sort ] unit-test
index 52b883195ecc351fa338806120acee33a92cc091..bdef9a6ff9ae3a66db7db99d2ce79cee58366aed 100644 (file)
@@ -1,6 +1,6 @@
 ! Copyright (C) 2010 Daniel Ehrenberg
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors assocs hashtables kernel new-sets
+USING: accessors assocs hashtables kernel sets
 sequences parser ;
 QUALIFIED: sets
 IN: hash-sets
index f9f8ba9e65a2ba3a8972f3bfcfa7bce3b86afaf8..aa76a4f02ed2f9774946e2f7ec7e3b1ae731c0d4 100644 (file)
@@ -1,26 +1,16 @@
-USING: kernel sets tools.test ;
+! Copyright (C) 2010 Daniel Ehrenberg
+! See http://factorcode.org/license.txt for BSD license.
+USING: sets tools.test kernel prettyprint hash-sets sorting ;
 IN: sets.tests
 
-[ f ] [ { 0 1 1 2 3 5 } all-unique? ] unit-test
-[ t ] [ { 0 1 2 3 4 5 } all-unique? ] unit-test
-
-[ V{ 1 2 3 } ] [ { 1 2 2 3 3 } prune ] unit-test
-[ V{ 3 2 1 } ] [ { 3 3 2 2 1 } prune ] unit-test
-
 [ { } ] [ { } { } intersect  ] unit-test
 [ { 2 3 } ] [ { 1 2 3 } { 2 3 4 } intersect ] unit-test
 
 [ { } ] [ { } { } diff ] unit-test
 [ { 1 } ] [ { 1 2 3 } { 2 3 4 } diff ] unit-test
 
-[ V{ } ] [ { } { } union ] unit-test
-[ V{ 1 2 3 4 } ] [ { 1 2 3 } { 2 3 4 } union ] unit-test
-
-[ V{ 1 2 3 } ]
-[ 3 V{ 1 2 } clone [ adjoin ] keep ] unit-test
-
-[ V{ 1 2 3 } ]
-[ 3 V{ 1 3 2 } clone [ adjoin ] keep ] unit-test
+[ { } ] [ { } { } union ] unit-test
+[ { 1 2 3 4 } ] [ { 1 2 3 } { 2 3 4 } union ] unit-test
 
 [ t ] [ { 1 2 } { 1 3 } intersects? ] unit-test
 
@@ -30,3 +20,34 @@ IN: sets.tests
 
 [ f ] [ { 1 } { } intersects? ] unit-test
 
+[ t ] [ 4 { 2 4 5 } in? ] unit-test
+[ f ] [ 1 { 2 4 5 } in? ] unit-test
+
+[ V{ 1 2 3 } ] [ 3 V{ 1 2 } clone [ adjoin ] keep ] unit-test
+[ V{ 1 2 } ] [ 2 V{ 1 2 } clone [ adjoin ] keep ] unit-test
+[ V{ 1 2 } ] [ 3 V{ 1 2 } clone [ delete ] keep ] unit-test
+[ V{ 2 } ] [ 1 V{ 1 2 } clone [ delete ] keep ] unit-test
+
+[ t ] [ { 1 2 3 } { 2 1 3 } set= ] unit-test
+[ f ] [ { 2 3 } { 1 2 3 } set= ] unit-test
+[ f ] [ { 1 2 3 } { 2 3 } set= ] unit-test
+
+[ { 1 } ] [ { 1 } members ] unit-test
+
+[ { 1 2 3 } ] [ { 1 1 1 2 2 3 3 3 3 3 } dup set-like natural-sort ] unit-test
+[ { 1 2 3 } ] [ HS{ 1 2 3 } { } set-like natural-sort ] unit-test
+
+[ HS{ 1 2 3 } ] [ { 1 2 3 } fast-set ] unit-test
+
+[ { 1 2 3 } ] [ { { 1 } { 2 } { 1 3 } } combine ] unit-test
+
+[ f ] [ { 0 1 1 2 3 5 } all-unique? ] unit-test
+[ t ] [ { 0 1 2 3 4 5 } all-unique? ] unit-test
+
+[ { 1 2 3 } ] [ { 1 2 2 3 3 } { } set-like ] unit-test
+[ { 3 2 1 } ] [ { 3 3 2 2 1 } { } set-like ] unit-test
+
+[ { 2 1 2 1 } ] [ { 1 2 3 2 1 2 1 } duplicates ] unit-test
+[ f ] [ HS{ 1 2 3 1 2 1 } duplicates ] unit-test
+
+[ H{ { 3 HS{ 1 2 } } } ] [ H{ } clone 1 3 pick adjoin-at 2 3 pick adjoin-at ] unit-test
index 38c1f73bb372eca032898c05a90349bbfea3d00e..550b906b55397c52cf1319ec866a21c65fcfff30 100644 (file)
-! Copyright (C) 2008, 2009 Slava Pestov, Doug Coleman.
+! Copyright (C) 2010 Daniel Ehrenberg
 ! See http://factorcode.org/license.txt for BSD license.
-USING: assocs hashtables kernel sequences vectors ;
+USING: accessors assocs hashtables kernel vectors
+math sequences ;
 IN: sets
 
-: adjoin ( elt seq -- ) [ remove! drop ] [ push ] 2bi ;
+! Set protocol
+MIXIN: set
+GENERIC: adjoin ( elt set -- )
+GENERIC: in? ( elt set -- ? )
+GENERIC: delete ( elt set -- )
+GENERIC: set-like ( set exemplar -- set' )
+GENERIC: fast-set ( set -- set' )
+GENERIC: members ( set -- sequence )
+GENERIC: union ( set1 set2 -- set )
+GENERIC: intersect ( set1 set2 -- set )
+GENERIC: intersects? ( set1 set2 -- ? )
+GENERIC: diff ( set1 set2 -- set )
+GENERIC: subset? ( set1 set2 -- ? )
+GENERIC: set= ( set1 set2 -- ? )
+GENERIC: duplicates ( set -- sequence )
+GENERIC: all-unique? ( set -- ? )
+
+! Defaults for some methods.
+! Override them for efficiency
+
+M: set union
+    [ [ members ] bi@ append ] keep set-like ;
 
-: conjoin ( elt assoc -- ) dupd set-at ;
+<PRIVATE
 
-: conjoin-at ( value key assoc -- )
-    [ dupd ?set-at ] change-at ;
+: tester ( set -- quot )
+    fast-set [ in? ] curry ; inline
 
-: (prune) ( elt hash vec -- )
-    3dup drop key? [ 3drop ] [
-        [ drop conjoin ] [ nip push ] 3bi
-    ] if ; inline
+: sequence/tester ( set1 set2 -- set1' quot )
+    [ members ] [ tester ] bi* ; inline
 
-: prune ( seq -- newseq )
-    [ ] [ length <hashtable> ] [ length <vector> ] tri
-    [ [ (prune) ] 2curry each ] keep ;
+PRIVATE>
 
-: duplicates ( seq -- newseq )
-    H{ } clone [ [ key? ] [ conjoin ] 2bi ] curry filter ;
+M: set intersect
+    [ sequence/tester filter ] keep set-like ;
 
-: gather ( seq quot -- newseq )
-    map concat prune ; inline
+M: set diff
+    [ sequence/tester [ not ] compose filter ] keep set-like ;
 
-: unique ( seq -- assoc )
-    [ dup ] H{ } map>assoc ;
+M: set intersects?
+    sequence/tester any? ;
+
+M: set subset?
+    sequence/tester all? ;
+    
+M: set set=
+    2dup subset? [ swap subset? ] [ 2drop f ] if ;
 
-: (all-unique?) ( elt hash -- ? )
-    2dup key? [ 2drop f ] [ conjoin t ] if ;
+M: set fast-set ;
 
-: all-unique? ( seq -- ? )
-    dup length <hashtable> [ (all-unique?) ] curry all? ;
+M: set duplicates drop f ;
+
+M: set all-unique? drop t ;
 
 <PRIVATE
 
-: tester ( seq -- quot ) unique [ key? ] curry ; inline
+: (pruned) ( elt hash vec -- )
+    3dup drop in? [ 3drop ] [
+        [ drop adjoin ] [ nip push ] 3bi
+    ] if ; inline
+
+: pruned ( seq -- newseq )
+    [ f fast-set ] [ length <vector> ] bi
+    [ [ (pruned) ] 2curry each ] keep ;
 
 PRIVATE>
 
-: intersect ( seq1 seq2 -- newseq )
-    tester filter ;
+! Sequences are sets
+INSTANCE: sequence set
 
-: intersects? ( seq1 seq2 -- ? )
-    tester any? ;
+M: sequence in?
+    member? ; inline
 
-: diff ( seq1 seq2 -- newseq )
-    tester [ not ] compose filter ;
+M: sequence adjoin
+    [ delete ] [ push ] 2bi ;
 
-: union ( seq1 seq2 -- newseq )
-    append prune ;
+M: sequence delete
+    remove! drop ; inline
 
-: subset? ( seq1 seq2 -- ? )
-    tester all? ;
+M: sequence set-like
+    [ members ] dip like ;
 
-: set= ( seq1 seq2 -- ? )
-    [ unique ] bi@ = ;
+M: sequence members
+    [ pruned ] keep like ;
+
+M: sequence all-unique?
+    dup pruned sequence= ;
+
+: combine ( sets -- set )
+    f [ union ] reduce ;
+
+: gather ( seq quot -- newseq )
+    map concat members ; inline
+
+: adjoin-at ( value key assoc -- )
+    [ [ f fast-set ] unless* [ adjoin ] keep ] change-at ;
+
+! Temporarily for compatibility
+
+ALIAS: prune members
+: unique ( seq -- assoc )
+    [ dup ] H{ } map>assoc ;
+: conjoin ( elt assoc -- )
+    dupd set-at ;
+: conjoin-at ( value key assoc -- )
+    [ dupd ?set-at ] change-at ;