From: John Benediktsson Date: Sat, 21 Jan 2017 06:49:53 +0000 (-0800) Subject: sequences: swap stack arguments for start/start*/subseq?. X-Git-Tag: unmaintained~249 X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=commitdiff_plain;h=63b0593824ed6dcdf6e090f8d38c4cfddcddf903 sequences: swap stack arguments for start/start*/subseq?. It is more natural to be ( seq subseq -- ? ). --- diff --git a/basis/alien/libraries/finder/linux/linux-tests.factor b/basis/alien/libraries/finder/linux/linux-tests.factor index 416217560f..ff06c4bb89 100644 --- a/basis/alien/libraries/finder/linux/linux-tests.factor +++ b/basis/alien/libraries/finder/linux/linux-tests.factor @@ -1,5 +1,5 @@ USING: alien.libraries.finder sequences tools.test ; IN: alien.libraries.fidner.linux -{ t } [ "libm.so" "m" find-library subseq? ] unit-test -{ t } [ "libc.so" "c" find-library subseq? ] unit-test +{ t } [ "m" find-library "libm.so" subseq? ] unit-test +{ t } [ "c" find-library "libc.so" subseq? ] unit-test diff --git a/basis/alien/libraries/finder/macosx/macosx-tests.factor b/basis/alien/libraries/finder/macosx/macosx-tests.factor index 3fe2f938c2..a7c61e9852 100644 --- a/basis/alien/libraries/finder/macosx/macosx-tests.factor +++ b/basis/alien/libraries/finder/macosx/macosx-tests.factor @@ -44,7 +44,7 @@ IN: alien.libraries.finder.macosx } [ dyld-find ] map ] unit-test -{ t } [ "libm.dylib" "m" find-library subseq? ] unit-test -{ t } [ "libc.dylib" "c" find-library subseq? ] unit-test -{ t } [ "libbz2.dylib" "bz2" find-library subseq? ] unit-test -{ t } [ "AGL.framework" "AGL" find-library subseq? ] unit-test +{ t } [ "m" find-library "libm.dylib" subseq? ] unit-test +{ t } [ "c" find-library "libc.dylib" subseq? ] unit-test +{ t } [ "bz2" find-library "libbz2.dylib" subseq? ] unit-test +{ t } [ "AGL" find-library "AGL.framework" subseq? ] unit-test diff --git a/basis/alien/libraries/finder/macosx/macosx.factor b/basis/alien/libraries/finder/macosx/macosx.factor index c6d260b6d9..659b342b05 100644 --- a/basis/alien/libraries/finder/macosx/macosx.factor +++ b/basis/alien/libraries/finder/macosx/macosx.factor @@ -121,7 +121,7 @@ PRIVATE> : framework-find ( name -- path ) dup dyld-find [ nip ] [ - ".framework" over start [ + dup ".framework" start [ dupd head ] [ [ ".framework" append ] keep diff --git a/basis/cocoa/application/application.factor b/basis/cocoa/application/application.factor index 86cd177916..91971c1c9d 100644 --- a/basis/cocoa/application/application.factor +++ b/basis/cocoa/application/application.factor @@ -40,9 +40,8 @@ FUNCTION: void NSBeep ( ) : running.app? ( -- ? ) ! Test if we're running a .app. - ".app" NSBundle -> mainBundle -> bundlePath CF>string - subseq? ; + ".app" subseq? ; : assert.app ( message -- ) running.app? [ diff --git a/basis/db/sqlite/sqlite.factor b/basis/db/sqlite/sqlite.factor index 29abb0422a..fbc512a8b3 100644 --- a/basis/db/sqlite/sqlite.factor +++ b/basis/db/sqlite/sqlite.factor @@ -259,7 +259,7 @@ M: sqlite-db-connection persistent-table ( -- assoc ) "sql-spec" get modifiers>> [ +not-null+ = ] any? not ; : delete-cascade? ( -- ? ) - "sql-spec" get modifiers>> { +on-delete+ +cascade+ } swap subseq? ; + "sql-spec" get modifiers>> { +on-delete+ +cascade+ } subseq? ; : sqlite-trigger, ( string -- ) { } { } 3, ; diff --git a/basis/game/input/iokit/iokit.factor b/basis/game/input/iokit/iokit.factor index 9eb30d7467..a89c925989 100644 --- a/basis/game/input/iokit/iokit.factor +++ b/basis/game/input/iokit/iokit.factor @@ -338,7 +338,7 @@ M: iokit-game-input-backend get-controllers ( -- sequence ) +controller-states+ get-global keys [ controller boa ] map ; : ?join ( pre post sep -- string ) - 2over start [ swap 2nip ] [ [ 2array ] dip join ] if ; + 2over swap start [ swap 2nip ] [ [ 2array ] dip join ] if ; M: iokit-game-input-backend product-string ( controller -- string ) handle>> diff --git a/basis/help/lint/checks/checks.factor b/basis/help/lint/checks/checks.factor index e5f3a93e4a..3be202efb1 100644 --- a/basis/help/lint/checks/checks.factor +++ b/basis/help/lint/checks/checks.factor @@ -137,7 +137,7 @@ SYMBOL: vocab-articles simple-lint-error ] when ] [ - " " swap subseq? [ + " " subseq? [ "Paragraph text should not contain double spaces" simple-lint-error ] when diff --git a/basis/help/search/search.factor b/basis/help/search/search.factor index 87db04467f..b68193fa41 100644 --- a/basis/help/search/search.factor +++ b/basis/help/search/search.factor @@ -38,7 +38,7 @@ MEMO: article-words ( name -- words ) search-words [ { } ] [ [ all-articles ] dip dup length 1 > [ - '[ article-words _ swap subseq? ] filter + '[ article-words _ subseq? ] filter ] [ first '[ article-words [ _ head? ] any? ] filter ] if diff --git a/basis/html/templates/fhtml/fhtml.factor b/basis/html/templates/fhtml/fhtml.factor index 1d72c04c43..f4ee1bca8f 100644 --- a/basis/html/templates/fhtml/fhtml.factor +++ b/basis/html/templates/fhtml/fhtml.factor @@ -25,7 +25,7 @@ M: template-lexer skip-word DEFER: <% delimiter : check-<% ( lexer -- col ) - "<%" swap [ line-text>> ] [ column>> ] bi start* ; + [ line-text>> "<%" ] [ column>> ] bi start ; : found-<% ( accum lexer col -- accum ) [ diff --git a/basis/http/client/client-tests.factor b/basis/http/client/client-tests.factor index 651770acc8..de5f6cbad8 100644 --- a/basis/http/client/client-tests.factor +++ b/basis/http/client/client-tests.factor @@ -50,8 +50,8 @@ IN: http.client.tests ! hit the velox.ch website. ! { t } [ ! "https://alice.sni.velox.ch" http-get nip - ! [ "Great!" swap subseq? ] - ! [ "TLS SNI Test Site: alice.sni.velox.ch" swap subseq? ] bi and + ! [ "Great!" subseq? ] + ! [ "TLS SNI Test Site: alice.sni.velox.ch" subseq? ] bi and ! ] unit-test { t } [ diff --git a/basis/mime/multipart/multipart.factor b/basis/mime/multipart/multipart.factor index d8daba5be1..bacf544c5f 100644 --- a/basis/mime/multipart/multipart.factor +++ b/basis/mime/multipart/multipart.factor @@ -45,8 +45,7 @@ C: mime-variable : dump-until-separator ( multipart -- multipart ) dup - [ current-separator>> ] [ bytes>> ] bi - [ nip ] [ start ] 2bi [ + [ bytes>> ] [ current-separator>> ] bi dupd start [ cut-slice [ mime-write ] [ over current-separator>> length short tail-slice >>bytes ] bi* diff --git a/basis/models/search/search.factor b/basis/models/search/search.factor index 061acc7d9c..85db884a89 100644 --- a/basis/models/search/search.factor +++ b/basis/models/search/search.factor @@ -7,4 +7,4 @@ IN: models.search '[ _ curry filter ] ; inline : ( values search quot -- model ) - '[ swap @ [ >case-fold ] bi@ subseq? ] ; inline + '[ swap @ [ >case-fold ] bi@ swap subseq? ] ; inline diff --git a/basis/multiline/multiline.factor b/basis/multiline/multiline.factor index 1c2c1d462d..3a645a15ed 100644 --- a/basis/multiline/multiline.factor +++ b/basis/multiline/multiline.factor @@ -42,7 +42,7 @@ SYNTAX: STRING: :: (scan-multiline-string) ( i end lexer -- j ) lexer line-text>> :> text lexer still-parsing? [ - end text i start* [| j | + text end i start* [| j | i j text subseq % j end length + ] [ text i short tail % CHAR: \n , diff --git a/basis/quoted-printable/quoted-printable-tests.factor b/basis/quoted-printable/quoted-printable-tests.factor index d9d8385195..f4df65b254 100644 --- a/basis/quoted-printable/quoted-printable-tests.factor +++ b/basis/quoted-printable/quoted-printable-tests.factor @@ -23,8 +23,8 @@ and we didn't know hów tö do thât" latin2 encode >quoted ] unit-test : message ( -- str ) 55 [ "hello" ] replicate concat ; -{ f } [ message >quoted "=\r\n" swap subseq? ] unit-test +{ f } [ message >quoted "=\r\n" subseq? ] unit-test { 1 } [ message >quoted string-lines length ] unit-test -{ t } [ message >quoted-lines "=\r\n" swap subseq? ] unit-test +{ t } [ message >quoted-lines "=\r\n" subseq? ] unit-test { 4 } [ message >quoted-lines string-lines length ] unit-test { "===o" } [ message >quoted-lines string-lines [ last ] "" map-as ] unit-test diff --git a/basis/sequences/deep/deep-tests.factor b/basis/sequences/deep/deep-tests.factor index b96a51699a..83ef78ccf1 100644 --- a/basis/sequences/deep/deep-tests.factor +++ b/basis/sequences/deep/deep-tests.factor @@ -34,13 +34,13 @@ IN: sequences.deep.tests [ { { 1 2 3 } 4 } { { { 1 2 3 } 4 } 2 } deep-member? ] unit-test { f } -[ { 1 2 3 4 } { 1 2 3 { 4 } } deep-subseq? ] unit-test +[ { 1 2 3 { 4 } } { 1 2 3 4 } deep-subseq? ] unit-test { t } [ { 1 2 3 4 } { 1 2 3 4 } deep-subseq? ] unit-test { t } -[ { 1 2 3 4 } { { 1 2 3 4 } } deep-subseq? ] unit-test +[ { { 1 2 3 4 } } { 1 2 3 4 } deep-subseq? ] unit-test { 3 } [ { 1 { 2 3 { 4 } } 5 { { 6 } 7 } } 0 [ diff --git a/basis/sequences/deep/deep.factor b/basis/sequences/deep/deep.factor index e4edd80685..d90c167b2a 100644 --- a/basis/sequences/deep/deep.factor +++ b/basis/sequences/deep/deep.factor @@ -54,9 +54,9 @@ M: object branch? drop f ; _ swap dup branch? [ member? ] [ 2drop f ] if ] deep-find >boolean ; -: deep-subseq? ( subseq seq -- ? ) - swap '[ - _ swap dup branch? [ subseq? ] [ 2drop f ] if +: deep-subseq? ( seq subseq -- ? ) + '[ + dup branch? [ _ subseq? ] [ drop f ] if ] deep-find >boolean ; : deep-map! ( ... obj quot: ( ... elt -- ... elt' ) -- ... obj ) diff --git a/basis/tools/scaffold/scaffold.factor b/basis/tools/scaffold/scaffold.factor index 003c90e14c..726ed1a080 100644 --- a/basis/tools/scaffold/scaffold.factor +++ b/basis/tools/scaffold/scaffold.factor @@ -20,7 +20,7 @@ ERROR: not-a-vocab-root string ; trim-tail-separators vocab-roots get member? ; -: contains-dot? ( string -- ? ) ".." swap subseq? ; +: contains-dot? ( string -- ? ) ".." subseq? ; : contains-separator? ( string -- ? ) [ path-separator? ] any? ; diff --git a/basis/urls/urls.factor b/basis/urls/urls.factor index 858f4a57c9..3bff389364 100644 --- a/basis/urls/urls.factor +++ b/basis/urls/urls.factor @@ -138,7 +138,7 @@ PRIVATE> { [ dup "/" head? ] [ nip ] } { [ dup empty? ] [ drop ] } { [ over "/" tail? ] [ append ] } - { [ "/" pick start not ] [ nip ] } + { [ over "/" start not ] [ nip ] } [ [ "/" split1-last drop "/" ] dip 3append ] } cond ; diff --git a/core/sequences/sequences.factor b/core/sequences/sequences.factor index b559d36594..057d8799d3 100644 --- a/core/sequences/sequences.factor +++ b/core/sequences/sequences.factor @@ -972,20 +972,21 @@ PRIVATE> -: start* ( subseq seq n -- i ) - pick length [ pick length swap - 1 + ] keep +: start* ( seq subseq n -- i ) + 2over [ length ] bi@ [ - 1 + ] keep [ (start) ] curry (find-integer) 2nip ; -: start ( subseq seq -- i ) 0 start* ; inline +: start ( seq subseq -- i ) 0 start* ; inline -: subseq? ( subseq seq -- ? ) start >boolean ; +: subseq? ( seq subseq -- ? ) start >boolean ; : drop-prefix ( seq1 seq2 -- slice1 slice2 ) 2dup mismatch [ 2dup min-length ] unless* diff --git a/core/splitting/splitting.factor b/core/splitting/splitting.factor index 5a413b916e..9e812163ad 100644 --- a/core/splitting/splitting.factor +++ b/core/splitting/splitting.factor @@ -30,7 +30,7 @@ PRIVATE> : (split1) ( seq subseq snip-quot -- before after ) [ swap [ - [ drop length ] [ start dup ] 2bi + [ drop length ] [ swap start dup ] 2bi [ [ nip ] [ + ] 2bi t ] [ 2drop f f f ] if diff --git a/core/strings/strings-tests.factor b/core/strings/strings-tests.factor index ae3b874620..fddf7106bc 100644 --- a/core/strings/strings-tests.factor +++ b/core/strings/strings-tests.factor @@ -12,20 +12,20 @@ vectors ; { "abc" } [ "ab" "c" append ] unit-test { "abc" } [ "a" "b" "c" 3append ] unit-test -{ 3 } [ "a" "hola" start ] unit-test -{ f } [ "x" "hola" start ] unit-test -{ 0 } [ "" "a" start ] unit-test +{ 3 } [ "hola" "a" start ] unit-test +{ f } [ "hola" "x" start ] unit-test +{ 0 } [ "a" "" start ] unit-test { 0 } [ "" "" start ] unit-test { 0 } [ "hola" "hola" start ] unit-test -{ 1 } [ "ol" "hola" start ] unit-test -{ f } [ "amigo" "hola" start ] unit-test -{ f } [ "holaa" "hola" start ] unit-test +{ 1 } [ "hola" "ol" start ] unit-test +{ f } [ "hola" "amigo" start ] unit-test +{ f } [ "hola" "holaa" start ] unit-test { "Beginning" } [ "Beginning and end" 9 head ] unit-test { f } [ CHAR: I "team" member? ] unit-test -{ t } [ "ea" "team" subseq? ] unit-test -{ f } [ "actore" "Factor" subseq? ] unit-test +{ t } [ "team" "ea" subseq? ] unit-test +{ f } [ "Factor" "actore" subseq? ] unit-test { "end" } [ "Beginning and end" 14 tail ] unit-test diff --git a/extra/alien/fortran/fortran.factor b/extra/alien/fortran/fortran.factor index 4f0633b5d0..0702dccdac 100755 --- a/extra/alien/fortran/fortran.factor +++ b/extra/alien/fortran/fortran.factor @@ -440,6 +440,8 @@ MACRO: fortran-invoke ( return library function parameters -- quot ) return library function parameters return [ c:void ] unless* parse-arglist [ \ fortran-invoke 5 [ ] nsequence ] dip define-declared ; +! TODO: I THINK THIS IS RIGHT FOR SUBSEQ? + SYNTAX: SUBROUTINE: f current-library get scan-token ")" parse-tokens [ "()" subseq? ] reject define-fortran-function ; diff --git a/extra/html/parser/analyzer/analyzer.factor b/extra/html/parser/analyzer/analyzer.factor index 9a26531525..8d8e1d6c86 100644 --- a/extra/html/parser/analyzer/analyzer.factor +++ b/extra/html/parser/analyzer/analyzer.factor @@ -141,7 +141,7 @@ ERROR: undefined-find-nth m n seq quot ; [ { [ name>> = ] [ closing?>> not ] } 1&& ] with find-all ; : href-contains? ( str tag -- ? ) - "href" attribute* [ subseq? ] [ 2drop f ] if ; + "href" attribute* [ swap subseq? ] [ 2drop f ] if ; : find-hrefs ( vector -- vector' ) [ { [ name>> "a" = ] [ "href" attribute? ] } 1&& ] filter sift diff --git a/extra/io/encodings/detect/detect.factor b/extra/io/encodings/detect/detect.factor index ab6158b639..518cfa1c47 100644 --- a/extra/io/encodings/detect/detect.factor +++ b/extra/io/encodings/detect/detect.factor @@ -17,7 +17,7 @@ default-8bit-encoding [ latin1 ] initialize : prolog-encoding ( string -- iana-encoding ) '[ - _ "encoding=" over start + _ dup "encoding=" start 10 + swap [ [ 1 - ] dip nth ] [ index-from ] [ swapd subseq ] 2tri ] [ drop "UTF-8" ] recover ; diff --git a/extra/lint/lint.factor b/extra/lint/lint.factor index dee21564c2..77fae4d520 100644 --- a/extra/lint/lint.factor +++ b/extra/lint/lint.factor @@ -246,7 +246,7 @@ GENERIC: lint ( obj -- seq ) M: object lint ( obj -- seq ) drop f ; M: callable lint ( quot -- seq ) - [ lint-definitions-keys get-global ] dip '[ _ subseq? ] filter ; + lint-definitions-keys get-global [ subseq? ] with filter ; M: word lint ( word -- seq/f ) def>> [ callable? ] deep-filter [ lint ] map concat ; diff --git a/extra/metar/metar.factor b/extra/metar/metar.factor index fc6df7b008..a04a254d2b 100644 --- a/extra/metar/metar.factor +++ b/extra/metar/metar.factor @@ -227,7 +227,7 @@ CONSTANT: compass-directions H{ ] if ; : parse-weather ( str -- str' ) - "VC" over subseq? [ "VC" "" replace t ] [ f ] if + dup "VC" subseq? [ "VC" "" replace t ] [ f ] if [ (parse-weather) ] [ [ " in the vicinity" append ] when ] bi* ; diff --git a/extra/project-euler/047/047.factor b/extra/project-euler/047/047.factor index e7b585bf0d..3b0c6c6755 100644 --- a/extra/project-euler/047/047.factor +++ b/extra/project-euler/047/047.factor @@ -80,7 +80,7 @@ SYMBOL: sieve ] each sieve get ; : consecutive-under ( m limit -- n/f ) - prime-tau-upto [ dup ] dip start ; + prime-tau-upto swap dup start ; PRIVATE> diff --git a/extra/rosetta-code/text-processing/max-licenses/max-licenses.factor b/extra/rosetta-code/text-processing/max-licenses/max-licenses.factor index 9943470916..e80688dd82 100644 --- a/extra/rosetta-code/text-processing/max-licenses/max-licenses.factor +++ b/extra/rosetta-code/text-processing/max-licenses/max-licenses.factor @@ -32,7 +32,7 @@ TUPLE: maxlicense max-count current-count times ; : ( -- max ) -1 0 V{ } clone \ maxlicense boa ; inline -: out? ( line -- ? ) [ "OUT" ] dip subseq? ; inline +: out? ( line -- ? ) "OUT" subseq? ; inline : line-time ( line -- time ) " " split harvest fourth ; inline diff --git a/extra/rosetta-code/web-scraping/web-scraping.factor b/extra/rosetta-code/web-scraping/web-scraping.factor index 402a960124..d0a56184cb 100644 --- a/extra/rosetta-code/web-scraping/web-scraping.factor +++ b/extra/rosetta-code/web-scraping/web-scraping.factor @@ -16,6 +16,6 @@ IN: rosetta-code.web-scraping : web-scraping-main ( -- ) "http://tycho.usno.navy.mil/cgi-bin/timer.pl" http-get nip - [ "UTC" swap start [ 9 - ] [ 1 - ] bi ] keep subseq print ; + [ "UTC" start [ 9 - ] [ 1 - ] bi ] keep subseq print ; MAIN: web-scraping-main diff --git a/extra/sequences/extras/extras-docs.factor b/extra/sequences/extras/extras-docs.factor index d52928eea3..e3ca8fc9d7 100644 --- a/extra/sequences/extras/extras-docs.factor +++ b/extra/sequences/extras/extras-docs.factor @@ -187,10 +187,10 @@ HELP: start-all { "subseq" sequence } { "seq" sequence } { "indices" sequence } } { $description "Outputs the starting indices of the non-overlapping occurrences of " { $snippet "subseq" } " in " { $snippet "seq" } "." } { $examples - { $example "USING: prettyprint sequences.extras ; \"ABA\" \"ABABA\" start-all ." + { $example "USING: prettyprint sequences.extras ; \"ABABA\" \"ABA\" start-all ." "{ 0 }" } - { $example "USING: prettyprint sequences.extras ; \"ABA\" \"ABAABA\" start-all ." + { $example "USING: prettyprint sequences.extras ; \"ABAABA\" \"ABA\" start-all ." "{ 0 3 }" } } ; @@ -200,7 +200,7 @@ HELP: start-all* { "subseq" sequence } { "seq" sequence } { "indices" sequence } } { $description "Outputs the starting indices of the possibly overlapping occurrences of " { $snippet "subseq" } " in " { $snippet "seq" } "." } { $examples - { $example "USING: prettyprint sequences.extras ; \"ABA\" \"ABABA\" start-all* ." + { $example "USING: prettyprint sequences.extras ; \"ABABA\" \"ABA\" start-all* ." "{ 0 2 }" } } ; @@ -209,7 +209,7 @@ HELP: count-subseq { "subseq" sequence } { "seq" sequence } { "n" integer } } { $description "Outputs the number of non-overlapping occurrences of " { $snippet "subseq" } " in " { $snippet "seq" } "." } { $examples - { $example "USING: prettyprint sequences.extras ; \"ABA\" \"ABABA\" count-subseq ." + { $example "USING: prettyprint sequences.extras ; \"ABABA\" \"ABA\" count-subseq ." "1" } } ; @@ -219,7 +219,7 @@ HELP: count-subseq* { "subseq" sequence } { "seq" sequence } { "n" integer } } { $description "Outputs the number of possibly overlapping occurrences of " { $snippet "subseq" } " in " { $snippet "seq" } "." } { $examples - { $example "USING: prettyprint sequences.extras ; \"ABA\" \"ABABA\" count-subseq* ." + { $example "USING: prettyprint sequences.extras ; \"ABABA\" \"ABA\" count-subseq* ." "2" } } ; diff --git a/extra/sequences/extras/extras-tests.factor b/extra/sequences/extras/extras-tests.factor index 28db9fb03f..c4d919c4c6 100644 --- a/extra/sequences/extras/extras-tests.factor +++ b/extra/sequences/extras/extras-tests.factor @@ -226,11 +226,11 @@ IN: sequences.extras.tests { 3/10 } [ 10 iota [ 3 < ] count* ] unit-test -{ { 0 } } [ "ABA" "ABABA" start-all ] unit-test -{ { 0 2 } } [ "ABA" "ABABA" start-all* ] unit-test -{ { 0 3 } } [ "ABA" "ABAABA" start-all ] unit-test -{ 1 } [ "ABA" "ABABA" count-subseq ] unit-test -{ 2 } [ "ABA" "ABABA" count-subseq* ] unit-test +{ { 0 } } [ "ABABA" "ABA" start-all ] unit-test +{ { 0 2 } } [ "ABABA" "ABA" start-all* ] unit-test +{ { 0 3 } } [ "ABAABA" "ABA" start-all ] unit-test +{ 1 } [ "ABABA" "ABA" count-subseq ] unit-test +{ 2 } [ "ABABA" "ABA" count-subseq* ] unit-test { 120000 } [ { 10 20 30 40 50 60 } 1 [ * ] 3 reduce-from ] unit-test diff --git a/extra/sequences/extras/extras.factor b/extra/sequences/extras/extras.factor index 8d2805473c..58eec4380b 100644 --- a/extra/sequences/extras/extras.factor +++ b/extra/sequences/extras/extras.factor @@ -577,21 +577,21 @@ PRIVATE> : map-find-last-index ( ... seq quot: ( ... elt index -- ... result/f ) -- ... result i elt ) [ find-last-index ] (map-find-index) ; inline -:: (start-all) ( subseq seq increment -- indices ) +:: (start-all) ( seq subseq increment -- indices ) 0 - [ [ subseq seq ] dip start* dup ] + [ [ seq subseq ] dip start* dup ] [ [ increment + ] keep ] produce nip ; -: start-all ( subseq seq -- indices ) - over length (start-all) ; inline +: start-all ( seq subseq -- indices ) + dup length (start-all) ; inline -: start-all* ( subseq seq -- indices ) +: start-all* ( seq subseq -- indices ) 1 (start-all) ; inline -: count-subseq ( subseq seq -- n ) +: count-subseq ( seq subseq -- n ) start-all length ; inline -: count-subseq* ( subseq seq -- n ) +: count-subseq* ( seq subseq -- n ) start-all* length ; inline : map-zip ( quot: ( x -- y ) -- alist ) diff --git a/extra/txon/txon.factor b/extra/txon/txon.factor index e04c7c1a3d..f774530529 100644 --- a/extra/txon/txon.factor +++ b/extra/txon/txon.factor @@ -41,8 +41,8 @@ DEFER: name/values parse-name [ parse-value ] dip associate ; : name=value ( string -- remain term ) - [ blank? ] trim - ":`" over subseq? [ (name=value) ] [ f swap ] if ; + [ blank? ] trim dup ":`" subseq? + [ (name=value) ] [ f swap ] if ; : name/values ( string -- remain terms ) [ dup { [ empty? not ] [ first CHAR: ` = not ] } 1&& ]