It is more natural to be ( seq subseq -- ? ).
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
} [ 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
: framework-find ( name -- path )
dup dyld-find [ nip ] [
- ".framework" over start [
+ dup ".framework" start [
dupd head
] [
[ ".framework" append ] keep
: running.app? ( -- ? )
! Test if we're running a .app.
- ".app"
NSBundle -> mainBundle -> bundlePath CF>string
- subseq? ;
+ ".app" subseq? ;
: assert.app ( message -- )
running.app? [
"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 -- )
{ } { } <simple-statement> 3, ;
+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>>
simple-lint-error
] when
] [
- " " swap subseq? [
+ " " subseq? [
"Paragraph text should not contain double spaces"
simple-lint-error
] when
search-words [ { } ] [
[ all-articles ] dip
dup length 1 > [
- '[ article-words _ swap subseq? ] filter
+ '[ article-words _ subseq? ] filter
] [
first '[ article-words [ _ head? ] any? ] filter
] if
DEFER: <% delimiter
: check-<% ( lexer -- col )
- "<%" swap [ line-text>> ] [ column>> ] bi start* ;
+ [ line-text>> "<%" ] [ column>> ] bi start ;
: found-<% ( accum lexer col -- accum )
[
! 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 } [
: 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*
'[ _ curry filter ] <smart-arrow> ; inline
: <string-search> ( values search quot -- model )
- '[ swap @ [ >case-fold ] bi@ subseq? ] <search> ; inline
+ '[ swap @ [ >case-fold ] bi@ swap subseq? ] <search> ; inline
:: (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 ,
: 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
[ { { 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 [
_ 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 )
trim-tail-separators
vocab-roots get member? ;
-: contains-dot? ( string -- ? ) ".." swap subseq? ;
+: contains-dot? ( string -- ? ) ".." subseq? ;
: contains-separator? ( string -- ? ) [ path-separator? ] any? ;
{ [ dup "/" head? ] [ nip ] }
{ [ dup empty? ] [ drop ] }
{ [ over "/" tail? ] [ append ] }
- { [ "/" pick start not ] [ nip ] }
+ { [ over "/" start not ] [ nip ] }
[ [ "/" split1-last drop "/" ] dip 3append ]
} cond ;
<PRIVATE
-: (start) ( subseq seq n length -- subseq seq ? )
+: (start) ( seq subseq n length -- seq subseq ? )
[
- [ 3dup ] dip [ + swap nth-unsafe ] keep rot nth-unsafe =
+ [ 3dup ] dip [ + ] keep
+ [ swap nth-unsafe ] bi-curry@ bi* =
] all-integers? nip ; inline
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*
: (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
{ "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
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 ;
[ { [ 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
: 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 ;
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 ;
] 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* ;
] each sieve get ;
: consecutive-under ( m limit -- n/f )
- prime-tau-upto [ dup <repetition> ] dip start ;
+ prime-tau-upto swap dup <repetition> start ;
PRIVATE>
: <maxlicense> ( -- 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
: 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
{ "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 }"
}
} ;
{ "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 }"
} } ;
{ "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"
} } ;
{ "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"
} } ;
{ 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
: 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 )
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&& ]