From 21461a1b7555d172c9a21c92400e26504348097b Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Thu, 26 May 2016 14:36:11 -0700 Subject: [PATCH] core: selector-for and collector-for are the wrong naming convention--they should be selector-as and collector-as because they take exemplars. The exemplar is the starting length of the output sequence in collector-as, so add another collector-for-as that takes a seq that we are making a collector for. --- .../generalizations/generalizations.factor | 6 ++--- core/sequences/sequences-docs.factor | 5 +++-- core/sequences/sequences.factor | 22 ++++++++++++------- extra/forestdb/lib/lib.factor | 4 ++-- extra/sequences/extras/extras.factor | 22 +++++++++---------- 5 files changed, 33 insertions(+), 26 deletions(-) diff --git a/basis/sequences/generalizations/generalizations.factor b/basis/sequences/generalizations/generalizations.factor index c05d667e2f..d0feb06063 100644 --- a/basis/sequences/generalizations/generalizations.factor +++ b/basis/sequences/generalizations/generalizations.factor @@ -95,19 +95,19 @@ MACRO: (ncollect) ( n -- quot ) : mnmap ( m*seq quot m n -- result*n ) 2dup '[ [ _ npick ] dip swap _ dupn ] 2dip mnmap-as ; inline -: ncollector-for ( quot exemplar... n -- quot' vec... ) +: ncollector-as ( quot exemplar... n -- quot' vec... ) 5 dupn '[ [ [ length ] keep new-resizable ] _ napply [ [ [ push ] _ apply-curry _ spread* ] _ ncurry compose ] _ nkeep ] call ; inline : ncollector ( quot n -- quot' vec... ) - [ V{ } swap dupn ] keep ncollector-for ; inline + [ V{ } swap dupn ] keep ncollector-as ; inline : nproduce-as ( pred quot exemplar... n -- seq... ) 7 dupn '[ _ ndup - [ _ ncollector-for [ while ] _ ndip ] + [ _ ncollector-as [ while ] _ ndip ] _ ncurry _ ndip [ like ] _ apply-curry _ spread* ] call ; inline diff --git a/core/sequences/sequences-docs.factor b/core/sequences/sequences-docs.factor index c76361dad4..20f400a4d7 100644 --- a/core/sequences/sequences-docs.factor +++ b/core/sequences/sequences-docs.factor @@ -1944,12 +1944,13 @@ ARTICLE: "sequences-combinator-implementation" "Implementing sequence combinator "Creating a new sequence unconditionally:" { $subsections collector - collector-for + collector-as + collector-for-as } "Creating a new sequence conditionally:" { $subsections selector - selector-for + selector-as 2selector } ; diff --git a/core/sequences/sequences.factor b/core/sequences/sequences.factor index ddb0982fba..f38365741e 100644 --- a/core/sequences/sequences.factor +++ b/core/sequences/sequences.factor @@ -551,19 +551,19 @@ PRIVATE> -: selector-for ( quot exemplar -- selector accum ) - [ length ] keep (selector-for) ; inline +: selector-as ( quot exemplar -- selector accum ) + [ length ] keep (selector-as) ; inline : selector ( quot -- selector accum ) - V{ } selector-for ; inline + V{ } selector-as ; inline : filter-as ( ... seq quot: ( ... elt -- ... ? ) exemplar -- ... subseq ) - pick length over [ (selector-for) [ each ] dip ] 2curry dip like ; inline + pick length over [ (selector-as) [ each ] dip ] 2curry dip like ; inline : filter ( ... seq quot: ( ... elt -- ... ? ) -- ... subseq ) over filter-as ; inline @@ -583,14 +583,20 @@ PRIVATE> : partition ( ... seq quot: ( ... elt -- ... ? ) -- ... trueseq falseseq ) over [ 2selector [ each ] 2dip ] dip [ like ] curry bi@ ; inline -: collector-for ( quot exemplar -- quot' vec ) +: collector-for-as ( seq quot exemplar -- seq quot' vec ) + [ over length ] dip new-resizable [ [ push ] curry compose ] keep ; inline + +: collector-as ( quot exemplar -- quot' vec ) [ length ] keep new-resizable [ [ push ] curry compose ] keep ; inline +: collector-for ( seq quot -- seq quot' vec ) + V{ } collector-for-as ; inline + : collector ( quot -- quot' vec ) - V{ } collector-for ; inline + V{ } collector-as ; inline : produce-as ( ..a pred: ( ..a -- ..b ? ) quot: ( ..b -- ..a obj ) exemplar -- ..b seq ) - dup [ collector-for [ while ] dip ] curry dip like ; inline + dup [ collector-as [ while ] dip ] curry dip like ; inline : produce ( ..a pred: ( ..a -- ..b ? ) quot: ( ..b -- ..a obj ) -- ..b seq ) { } produce-as ; inline diff --git a/extra/forestdb/lib/lib.factor b/extra/forestdb/lib/lib.factor index a7761fcdeb..f443b02563 100644 --- a/extra/forestdb/lib/lib.factor +++ b/extra/forestdb/lib/lib.factor @@ -297,11 +297,11 @@ T{ doc diff --git a/extra/sequences/extras/extras.factor b/extra/sequences/extras/extras.factor index 874718d728..e23c9725d1 100644 --- a/extra/sequences/extras/extras.factor +++ b/extra/sequences/extras/extras.factor @@ -93,27 +93,27 @@ IN: sequences.extras -: index-selector-for ( quot exemplar -- selector accum ) - [ length ] keep (index-selector-for) ; inline +: index-selector-as ( quot exemplar -- selector accum ) + [ length ] keep (index-selector-as) ; inline : index-selector ( quot -- selector accum ) - V{ } index-selector-for ; inline + V{ } index-selector-as ; inline -: selector-for* ( quot exemplar -- selector accum ) - [ length ] keep (selector-for*) ; inline +: selector-as* ( quot exemplar -- selector accum ) + [ length ] keep (selector-as*) ; inline -: selector* ( quot -- selector accum ) V{ } selector-for* ; inline +: selector* ( quot -- selector accum ) V{ } selector-as* ; inline : filter-index-as ( ... seq quot: ( ... elt i -- ... ? ) exemplar -- ... seq' ) - pick length over [ (index-selector-for) [ each-index ] dip ] 2curry dip like ; inline + pick length over [ (index-selector-as) [ each-index ] dip ] 2curry dip like ; inline : filter-index ( ... seq quot: ( ... elt i -- ... ? ) -- ... seq' ) over filter-index-as ; inline @@ -251,7 +251,7 @@ PRIVATE> : map-filter-as ( ... seq map-quot: ( ... elt -- ... newelt ) filter-quot: ( ... newelt -- ... ? ) exemplar -- ... subseq ) [ pick ] dip swap length over - [ (selector-for) [ compose each ] dip ] 2curry dip like ; inline + [ (selector-as) [ compose each ] dip ] 2curry dip like ; inline : map-filter ( ... seq map-quot: ( ... elt -- ... newelt ) filter-quot: ( ... newelt -- ... ? ) -- ... subseq ) pick map-filter-as ; inline @@ -615,4 +615,4 @@ PRIVATE> '[ _ dip ] assoc-map ; inline : map-values ( assoc quot: ( value -- value' ) -- assoc ) - '[ swap _ dip swap ] assoc-map ; inline \ No newline at end of file + '[ swap _ dip swap ] assoc-map ; inline -- 2.34.1