diff --git a/basis/regexp/classes/classes.factor b/basis/regexp/classes/classes.factor index e3e2f0bcf3..fd4c7e7e4f 100644 --- a/basis/regexp/classes/classes.factor +++ b/basis/regexp/classes/classes.factor @@ -5,6 +5,7 @@ unicode.categories combinators.short-circuit sequences fry macros arrays assocs sets classes mirrors unicode.script unicode.data ; FROM: ascii => ascii? ; +FROM: sets => members ; IN: regexp.classes SINGLETONS: dot letter-class LETTER-class Letter-class digit-class @@ -157,7 +158,7 @@ DEFER: substitute TUPLE: class-partition integers not-integers simples not-simples and or other ; : partition-classes ( seq -- class-partition ) - prune + members [ integer? ] partition [ not-integer? ] partition [ simple-class? ] partition @@ -194,7 +195,7 @@ TUPLE: class-partition integers not-integers simples not-simples and or other ; [ t swap remove ] change-other dup contradiction? [ drop f ] - [ filter-not-integers class-partition>seq prune t and-class seq>instance ] if ; + [ filter-not-integers class-partition>seq members t and-class seq>instance ] if ; : ( seq -- class ) dup and-class flatten partition-classes @@ -225,7 +226,7 @@ TUPLE: class-partition integers not-integers simples not-simples and or other ; [ f swap remove ] change-other dup tautology? [ drop t ] - [ filter-integers class-partition>seq prune f or-class seq>instance ] if ; + [ filter-integers class-partition>seq members f or-class seq>instance ] if ; : ( seq -- class ) dup or-class flatten partition-classes @@ -329,7 +330,7 @@ M: object class>questions 1array ; : condition-states ( condition -- states ) dup condition? [ [ yes>> ] [ no>> ] bi - [ condition-states ] bi@ append prune + [ condition-states ] bi@ union ] [ 1array ] if ; : condition-at ( condition assoc -- new-condition ) diff --git a/basis/regexp/parser/parser.factor b/basis/regexp/parser/parser.factor index 70281aa798..0025b89d56 100644 --- a/basis/regexp/parser/parser.factor +++ b/basis/regexp/parser/parser.factor @@ -27,7 +27,7 @@ ERROR: bad-class name ; [ [ simple ] keep ] H{ } map>assoc ; MEMO: simple-script-table ( -- table ) - script-table interval-values prune simple-table ; + script-table interval-values members simple-table ; MEMO: simple-category-table ( -- table ) categories simple-table ; diff --git a/basis/see/see.factor b/basis/see/see.factor index bb6ae5cf2d..0d93757086 100644 --- a/basis/see/see.factor +++ b/basis/see/see.factor @@ -239,7 +239,7 @@ PRIVATE> dup class? [ dup seeing-implementors % ] when dup generic? [ dup seeing-methods % ] when drop - ] { } make prune ; + ] { } make members ; : see-methods ( word -- ) methods see-all nl ; diff --git a/basis/simple-flat-file/simple-flat-file.factor b/basis/simple-flat-file/simple-flat-file.factor index 88a64b7746..a2fa8c3c4c 100644 --- a/basis/simple-flat-file/simple-flat-file.factor +++ b/basis/simple-flat-file/simple-flat-file.factor @@ -47,7 +47,7 @@ SYMBOL: interned ] { } make ; : process-interval-file ( ranges -- table ) - dup values prune interned + dup values members interned [ expand-ranges ] with-variable ; : load-interval-file ( filename -- table ) diff --git a/basis/suffix-arrays/suffix-arrays.factor b/basis/suffix-arrays/suffix-arrays.factor index 134c144fda..8f728c1eda 100644 --- a/basis/suffix-arrays/suffix-arrays.factor +++ b/basis/suffix-arrays/suffix-arrays.factor @@ -35,5 +35,5 @@ SYNTAX: SA{ \ } [ >suffix-array ] parse-literal ; : query ( begin suffix-array -- matches ) 2dup find-index dup - [ -rot [ from-to ] keep [ seq>> ] map prune ] + [ -rot [ from-to ] keep [ seq>> ] map members ] [ 3drop { } ] if ; diff --git a/basis/tools/deploy/shaker/shaker.factor b/basis/tools/deploy/shaker/shaker.factor index 73d4b919d5..6fb6ab91ec 100755 --- a/basis/tools/deploy/shaker/shaker.factor +++ b/basis/tools/deploy/shaker/shaker.factor @@ -21,6 +21,7 @@ QUALIFIED: source-files.errors QUALIFIED: vocabs FROM: alien.libraries.private => >deployed-library-path ; FROM: namespaces => set ; +FROM: sets => members ; IN: tools.deploy.shaker ! This file is some hairy shit. @@ -507,7 +508,7 @@ SYMBOL: deploy-vocab : write-vocab-manifest ( vocab-manifest-out -- ) "Writing vocabulary manifest to " write dup print flush vocabs "VOCABS:" prefix - deploy-libraries get [ libraries get at path>> ] map prune "LIBRARIES:" prefix append + deploy-libraries get [ libraries get at path>> ] map members "LIBRARIES:" prefix append swap utf8 set-file-lines ; : prepare-deploy-libraries ( -- ) diff --git a/basis/tools/profiler/profiler.factor b/basis/tools/profiler/profiler.factor index b0ce5dfbe4..c79d8b443c 100644 --- a/basis/tools/profiler/profiler.factor +++ b/basis/tools/profiler/profiler.factor @@ -5,6 +5,7 @@ io io.styles namespaces assocs kernel.private strings combinators sorting math.parser vocabs definitions tools.profiler.private tools.crossref continuations generic compiler.units compiler.crossref sets classes fry ; +FROM: sets => members ; IN: tools.profiler : profile ( quot -- ) @@ -41,7 +42,7 @@ IN: tools.profiler [ smart-usage [ word? ] filter ] [ generic-call-sites-of keys ] [ effect-dependencies-of keys ] - tri 3append prune ; + tri 3append members ; : usage-counters ( word -- alist ) profiler-usage counters ; diff --git a/basis/ui/gestures/gestures.factor b/basis/ui/gestures/gestures.factor index 30c96335cc..6e8e73ab55 100644 --- a/basis/ui/gestures/gestures.factor +++ b/basis/ui/gestures/gestures.factor @@ -6,6 +6,7 @@ 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 ; +FROM: sets => members ; IN: ui.gestures : get-gesture-handler ( gesture gadget -- quot ) @@ -235,7 +236,7 @@ SYMBOL: drag-timer : modifier ( mod modifiers -- seq ) [ second swap bitand 0 > ] with filter - 0 prune [ f ] [ >array ] if-empty ; + 0 members [ f ] [ >array ] if-empty ; : drag-loc ( -- loc ) hand-loc get-global hand-click-loc get-global v- ; diff --git a/basis/ui/ui.factor b/basis/ui/ui.factor index 824ffb8351..bf32b329ce 100644 --- a/basis/ui/ui.factor +++ b/basis/ui/ui.factor @@ -138,7 +138,7 @@ M: world ungraft* layout-queue [ dup layout find-world [ , ] when* ] slurp-deque - ] { } make prune ; + ] { } make members ; : redraw-worlds ( seq -- ) [ dup update-hand draw-world ] each ; diff --git a/basis/unicode/data/data.factor b/basis/unicode/data/data.factor index 85b59de750..ff4e64df29 100644 --- a/basis/unicode/data/data.factor +++ b/basis/unicode/data/data.factor @@ -184,7 +184,7 @@ C: code-point ] assoc-map ; : properties>intervals ( properties -- assoc[str,interval] ) - dup values prune [ f ] H{ } map>assoc + dup values members [ f ] H{ } map>assoc [ [ push-at ] curry assoc-each ] keep [ ] assoc-map ; diff --git a/basis/vocabs/metadata/metadata.factor b/basis/vocabs/metadata/metadata.factor index 09ca012fcc..5048b0edd0 100644 --- a/basis/vocabs/metadata/metadata.factor +++ b/basis/vocabs/metadata/metadata.factor @@ -73,7 +73,7 @@ M: vocab-link summary vocab-summary ; dup vocab-tags-path set-vocab-file-contents ; : add-vocab-tags ( tags vocab -- ) - [ vocab-tags append prune ] keep set-vocab-tags ; + [ vocab-tags append members ] keep set-vocab-tags ; : remove-vocab-tags ( tags vocab -- ) [ vocab-tags swap diff ] keep set-vocab-tags ; diff --git a/basis/vocabs/refresh/monitor/monitor.factor b/basis/vocabs/refresh/monitor/monitor.factor index 1bf73862e6..6274921bdb 100644 --- a/basis/vocabs/refresh/monitor/monitor.factor +++ b/basis/vocabs/refresh/monitor/monitor.factor @@ -39,7 +39,7 @@ TR: convert-separators "/\\" ".." ; : monitor-thread ( -- ) [ [ - vocab-roots get prune [ add-monitor-for-path ] each + vocab-roots get [ add-monitor-for-path ] each H{ } clone changed-vocabs set-global vocabs [ changed-vocab ] each diff --git a/basis/vocabs/refresh/refresh.factor b/basis/vocabs/refresh/refresh.factor index 3dc67712de..3d9c91bbcd 100644 --- a/basis/vocabs/refresh/refresh.factor +++ b/basis/vocabs/refresh/refresh.factor @@ -82,7 +82,7 @@ SYMBOL: modified-docs [ [ vocab f >>docs-loaded? drop ] each ] bi* ] [ - append prune + union [ unchanged-vocabs ] [ require-all load-failures. ] bi ] 2bi ; diff --git a/basis/xmode/keyword-map/keyword-map.factor b/basis/xmode/keyword-map/keyword-map.factor index 877eda44aa..402dd974b1 100644 --- a/basis/xmode/keyword-map/keyword-map.factor +++ b/basis/xmode/keyword-map/keyword-map.factor @@ -32,7 +32,7 @@ M: keyword-map >alist assoc>> >alist ; : (keyword-map-no-word-sep) ( assoc -- str ) - keys concat [ alpha? not ] filter prune natural-sort ; + keys combine [ alpha? not ] filter natural-sort ; : keyword-map-no-word-sep* ( keyword-map -- str ) dup no-word-sep>> [ ] [ diff --git a/core/classes/algebra/algebra.factor b/core/classes/algebra/algebra.factor index 96fa34314e..ae217904b7 100644 --- a/core/classes/algebra/algebra.factor +++ b/core/classes/algebra/algebra.factor @@ -4,6 +4,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 ; +RENAME: members sets => set-members IN: classes.algebra ( members -- class ) - [ null eq? not ] filter prune + [ null eq? not ] filter set-members dup length 1 = [ first ] [ anonymous-union boa ] if ; TUPLE: anonymous-intersection { participants read-only } ; : ( participants -- class ) - prune dup length 1 = [ first ] [ anonymous-intersection boa ] if ; + set-members dup length 1 = + [ first ] [ anonymous-intersection boa ] if ; TUPLE: anonymous-complement { class read-only } ; diff --git a/core/sets/sets.factor b/core/sets/sets.factor index 5e7c3b1617..5274c07d37 100644 --- a/core/sets/sets.factor +++ b/core/sets/sets.factor @@ -105,7 +105,6 @@ M: sequence all-unique? ! Temporarily for compatibility -ALIAS: prune members : unique ( seq -- assoc ) [ dup ] H{ } map>assoc ; : conjoin ( elt assoc -- ) diff --git a/extra/contributors/contributors.factor b/extra/contributors/contributors.factor index 97f4edc521..1ca62beef3 100644 --- a/extra/contributors/contributors.factor +++ b/extra/contributors/contributors.factor @@ -11,7 +11,7 @@ IN: contributors ] with-directory ; : patch-counts ( authors -- assoc ) - dup prune + dup members [ dup rot [ = ] with count ] with { } map>assoc ; diff --git a/extra/fuel/xref/xref.factor b/extra/fuel/xref/xref.factor index 39ba3bd2b3..649081ff03 100644 --- a/extra/fuel/xref/xref.factor +++ b/extra/fuel/xref/xref.factor @@ -29,7 +29,7 @@ IN: fuel.xref [ word? ] filter [ word>xref ] map ; : filter-prefix ( seq prefix -- seq ) - [ drop-prefix nip length 0 = ] curry filter prune ; + [ drop-prefix nip length 0 = ] curry filter members ; MEMO: (vocab-words) ( name -- seq ) >vocab-link words [ name>> ] map ; @@ -40,7 +40,7 @@ MEMO: (vocab-words) ( name -- seq ) append H{ } [ assoc-union ] reduce keys ; : vocabs-words ( names -- seq ) - prune [ (vocab-words) ] map concat ; + members [ (vocab-words) ] map concat ; PRIVATE> diff --git a/extra/html/parser/analyzer/analyzer.factor b/extra/html/parser/analyzer/analyzer.factor index 2d0b9514ff..760fd1e47b 100644 --- a/extra/html/parser/analyzer/analyzer.factor +++ b/extra/html/parser/analyzer/analyzer.factor @@ -145,7 +145,7 @@ TUPLE: link attributes clickable ; [ >url ] map ; : find-all-links ( vector -- vector' ) - [ find-hrefs ] [ find-frame-links ] bi append prune ; + [ find-hrefs ] [ find-frame-links ] bi union ; : find-forms ( vector -- vector' ) "form" over find-opening-tags-by-name diff --git a/extra/koszul/koszul.factor b/extra/koszul/koszul.factor index 81086e8064..58c90df6e9 100644 --- a/extra/koszul/koszul.factor +++ b/extra/koszul/koszul.factor @@ -79,11 +79,8 @@ SYMBOL: terms [ nth ] 2keep swap 1 + tail-slice (inversions) + ] curry each ; -: duplicates? ( seq -- ? ) - dup prune [ length ] bi@ > ; - : (wedge) ( n basis1 basis2 -- n basis ) - append dup duplicates? [ + append dup all-unique? not [ 2drop 0 { } ] [ dup permutation inversions -1^ rot * diff --git a/extra/mason/test/test.factor b/extra/mason/test/test.factor index bd703d3cb9..8593e47413 100644 --- a/extra/mason/test/test.factor +++ b/extra/mason/test/test.factor @@ -23,7 +23,7 @@ M: method word-vocabulary "method-generic" word-prop word-vocabulary ; :: do-step ( errors summary-file details-file -- ) errors [ error-type +linkage-error+ eq? not ] filter - [ file>> ] map prune natural-sort summary-file to-file + [ file>> ] map members natural-sort summary-file to-file errors details-file utf8 [ errors. ] with-file-writer ; : do-tests ( -- ) @@ -55,7 +55,7 @@ M: method word-vocabulary "method-generic" word-prop word-vocabulary ; "" to-refresh drop 2dup [ empty? not ] either? [ "Boot image is out of date. Changed vocabs:" print - append prune [ print ] each + members [ print ] each flush 1 exit ] [ 2drop ] if ; diff --git a/extra/project-euler/004/004.factor b/extra/project-euler/004/004.factor index 1bb9ebbef5..342e8d1a9e 100644 --- a/extra/project-euler/004/004.factor +++ b/extra/project-euler/004/004.factor @@ -29,7 +29,7 @@ IN: project-euler.004 PRIVATE> : euler004 ( -- answer ) - source-004 dup [ * ] cartesian-map concat prune max-palindrome ; + source-004 dup [ * ] cartesian-map combine max-palindrome ; ! [ euler004 ] 100 ave-time ! 1164 ms ave run time - 39.35 SD (100 trials) diff --git a/extra/project-euler/029/029.factor b/extra/project-euler/029/029.factor index 31be1a566b..944d345938 100644 --- a/extra/project-euler/029/029.factor +++ b/extra/project-euler/029/029.factor @@ -29,7 +29,7 @@ IN: project-euler.029 ! -------- : euler029 ( -- answer ) - 2 100 [a,b] dup [ ^ ] cartesian-map concat prune length ; + 2 100 [a,b] dup [ ^ ] cartesian-map concat members length ; ! [ euler029 ] 100 ave-time ! 704 ms ave run time - 28.07 SD (100 trials) diff --git a/extra/project-euler/032/032.factor b/extra/project-euler/032/032.factor index 7def55b659..de0cb72609 100644 --- a/extra/project-euler/032/032.factor +++ b/extra/project-euler/032/032.factor @@ -48,7 +48,7 @@ IN: project-euler.032 PRIVATE> : euler032 ( -- answer ) - source-032 [ valid? ] filter products prune sum ; + source-032 [ valid? ] filter products members sum ; ! [ euler032 ] 10 ave-time ! 16361 ms ave run time - 417.8 SD (10 trials) @@ -72,7 +72,7 @@ PRIVATE> 50 [1,b] 2000 [1,b] [ mmp ] cartesian-map concat [ pandigital? ] filter - products prune sum ; + products members sum ; ! [ euler032a ] 10 ave-time ! 2624 ms ave run time - 131.91 SD (10 trials) diff --git a/extra/project-euler/059/059.factor b/extra/project-euler/059/059.factor index 1fb5c7c8bb..306746b601 100644 --- a/extra/project-euler/059/059.factor +++ b/extra/project-euler/059/059.factor @@ -70,7 +70,7 @@ INSTANCE: rollover immutable-sequence over length swap [ bitxor ] 2map ; : frequency-analysis ( seq -- seq ) - dup prune [ + dup members [ [ 2dup [ = ] curry count 2array , ] each ] { } make nip ; inline diff --git a/extra/project-euler/079/079.factor b/extra/project-euler/079/079.factor index 3ad7406703..e0a616dc52 100644 --- a/extra/project-euler/079/079.factor +++ b/extra/project-euler/079/079.factor @@ -35,7 +35,7 @@ IN: project-euler.079 ] { } make ; : find-source ( seq -- elt ) - unzip diff prune + unzip diff [ "Topological sort failed" throw ] [ first ] if-empty ; : remove-source ( seq elt -- seq ) @@ -52,7 +52,7 @@ PRIVATE> : topological-sort ( seq -- seq ) [ [ (topological-sort) ] { } make ] keep - concat prune over diff append ; + combine over diff append ; : euler079 ( -- answer ) source-079 >edges topological-sort 10 digits>integer ; @@ -60,7 +60,7 @@ PRIVATE> ! [ euler079 ] 100 ave-time ! 1 ms ave run time - 0.46 SD (100 trials) -! TODO: prune and diff are relatively slow; topological sort could be +! TODO: set words on sequences are relatively slow; topological sort could be ! cleaned up and generalized much better, but it works for this problem SOLUTION: euler079 diff --git a/extra/project-euler/203/203.factor b/extra/project-euler/203/203.factor index 806098b865..2077fe328e 100644 --- a/extra/project-euler/203/203.factor +++ b/extra/project-euler/203/203.factor @@ -45,7 +45,7 @@ IN: project-euler.203 [ 0 prefix ] [ 0 suffix ] bi [ + ] 2map ; : generate ( n -- seq ) - 1 - { 1 } [ (generate) ] iterate concat prune ; + 1 - { 1 } [ (generate) ] iterate combine ; : squarefree ( n -- ? ) factors all-unique? ; diff --git a/extra/spider/spider.factor b/extra/spider/spider.factor index c8ea4734d2..2a0b2946e5 100644 --- a/extra/spider/spider.factor +++ b/extra/spider/spider.factor @@ -48,7 +48,7 @@ fetched-in parsed-html links processed-in fetched-at ; nonmatching>> push-links ; : filter-base-links ( spider spider-result -- base-links nonmatching-links ) - [ base>> host>> ] [ links>> prune ] bi* + [ base>> host>> ] [ links>> members ] bi* [ host>> = ] with partition ; : add-spidered ( spider spider-result -- )