renaming: contain? -> any?, deep-contains? -> deep-any?, pad-left -> pad-head, pad-right -> pad-tail, trim-left -> trim-head, trim-right -> trim-tail

db4
Doug Coleman 2009-01-29 22:19:07 -06:00
parent f9cd01683c
commit 3c408342ef
110 changed files with 233 additions and 233 deletions

View File

@ -45,8 +45,8 @@ SYMBOL: column
] with each ; inline
: encode-pad ( seq n -- )
[ 3 0 pad-right binary [ encode3 ] with-byte-writer ]
[ 1+ ] bi* head-slice 4 CHAR: = pad-right write-lines ; inline
[ 3 0 pad-tail binary [ encode3 ] with-byte-writer ]
[ 1+ ] bi* head-slice 4 CHAR: = pad-tail write-lines ; inline
ERROR: malformed-base64 ;

View File

@ -351,7 +351,7 @@ M: wrapper '
bootstrap-cell <groups> native> emit-seq ;
: pad-bytes ( seq -- newseq )
dup length bootstrap-cell align 0 pad-right ;
dup length bootstrap-cell align 0 pad-tail ;
: extended-part ( str -- str' )
dup [ 128 < ] all? [ drop f ] [

View File

@ -5,11 +5,11 @@ sequences io accessors arrays io.streams.string splitting
combinators accessors calendar calendar.format.macros present ;
IN: calendar.format
: pad-00 ( n -- str ) number>string 2 CHAR: 0 pad-left ;
: pad-00 ( n -- str ) number>string 2 CHAR: 0 pad-head ;
: pad-0000 ( n -- str ) number>string 4 CHAR: 0 pad-left ;
: pad-0000 ( n -- str ) number>string 4 CHAR: 0 pad-head ;
: pad-00000 ( n -- str ) number>string 5 CHAR: 0 pad-left ;
: pad-00000 ( n -- str ) number>string 5 CHAR: 0 pad-head ;
: write-00 ( n -- ) pad-00 write ;

View File

@ -128,7 +128,7 @@ M: sha1 checksum-stream ( stream -- sha1 )
[ zip concat ] keep like ;
: sha1-interleave ( string -- seq )
[ zero? ] trim-left
[ zero? ] trim-head
dup length odd? [ rest ] when
seq>2seq [ sha1 checksum-bytes ] bi@
2seq>seq ;

View File

@ -62,7 +62,7 @@ SYMBOLS: vars M K H S0 S1 process-M word-size block-size ;
[ + + w+ ] 2dip swap set-nth ; inline
: prepare-message-schedule ( seq -- w-seq )
word-size get group [ be> ] map block-size get 0 pad-right
word-size get group [ be> ] map block-size get 0 pad-tail
dup 16 64 dup <slice> [
process-M-256
] with each ;

2
basis/compiler/cfg/linearization/linearization.factor Normal file → Executable file
View File

@ -63,7 +63,7 @@ M: ##compare-float-branch linearize-insn
##box-float
##box-alien
} memq?
] contains? ;
] any? ;
: linearize-basic-block ( bb -- )
[ number>> _label ]

2
basis/compiler/codegen/codegen.factor Normal file → Executable file
View File

@ -400,7 +400,7 @@ M: no-such-symbol compiler-error-type
: check-dlsym ( symbols dll -- )
dup dll-valid? [
dupd '[ _ dlsym ] contains?
dupd '[ _ dlsym ] any?
[ drop ] [ no-such-symbol ] if
] [
dll-path no-such-library drop

8
basis/compiler/tests/stack-trace.factor Normal file → Executable file
View File

@ -19,14 +19,14 @@ words splitting grouping sorting accessors ;
: bleh ( seq -- seq' ) [ 3 + ] map [ 0 > ] filter ;
: stack-trace-contains? ( word -- ? ) symbolic-stack-trace memq? ;
: stack-trace-any? ( word -- ? ) symbolic-stack-trace memq? ;
[ t ] [
[ { 1 "hi" } bleh ] ignore-errors \ + stack-trace-contains?
[ { 1 "hi" } bleh ] ignore-errors \ + stack-trace-any?
] unit-test
[ t f ] [
[ { "hi" } bleh ] ignore-errors
\ + stack-trace-contains?
\ > stack-trace-contains?
\ + stack-trace-any?
\ > stack-trace-any?
] unit-test

2
basis/compiler/tree/builder/builder-tests.factor Normal file → Executable file
View File

@ -8,4 +8,4 @@ compiler.tree ;
: inline-recursive ( -- ) inline-recursive ; inline recursive
[ t ] [ \ inline-recursive build-tree-from-word [ #recursive? ] contains? nip ] unit-test
[ t ] [ \ inline-recursive build-tree-from-word [ #recursive? ] any? nip ] unit-test

2
basis/compiler/tree/checker/checker.factor Normal file → Executable file
View File

@ -175,7 +175,7 @@ M: #branch check-stack-flow*
branch-out get [ ] find nip swap head* >vector datastack set ;
M: #phi check-stack-flow*
branch-out get [ ] contains? [
branch-out get [ ] any? [
[ check-phi-in ] [ set-phi-datastack ] [ check-out-d ] tri
] [ drop terminated? on ] if ;

2
basis/compiler/tree/cleanup/cleanup-tests.factor Normal file → Executable file
View File

@ -498,7 +498,7 @@ cell-bits 32 = [
[ t ] [
[ { array-capacity } declare 1 fixnum+ ] cleaned-up-tree
[ { [ #call? ] [ node-input-infos second literal>> 1 = ] } 1&& ] contains?
[ { [ #call? ] [ node-input-infos second literal>> 1 = ] } 1&& ] any?
] unit-test
[ ] [

4
basis/compiler/tree/combinators/combinators.factor Normal file → Executable file
View File

@ -34,14 +34,14 @@ IN: compiler.tree.combinators
dup dup '[
_ keep swap [ drop t ] [
dup #branch? [
children>> [ _ contains-node? ] contains?
children>> [ _ contains-node? ] any?
] [
dup #recursive? [
child>> _ contains-node?
] [ drop f ] if
] if
] if
] contains? ; inline recursive
] any? ; inline recursive
: select-children ( seq flags -- seq' )
[ [ drop f ] unless ] 2map ;

2
basis/compiler/tree/dead-code/simple/simple.factor Normal file → Executable file
View File

@ -79,7 +79,7 @@ M: #alien-indirect compute-live-values* nip look-at-inputs ;
dup out-d>> drop-dead-values tuck in-d>> >>out-d drop ;
: some-outputs-dead? ( #call -- ? )
out-d>> [ live-value? not ] contains? ;
out-d>> [ live-value? not ] any? ;
: maybe-drop-dead-outputs ( node -- nodes )
dup some-outputs-dead? [

View File

@ -60,7 +60,7 @@ M: #branch normalize*
: eliminate-phi-introductions ( introductions seq terminated -- seq' )
[
[ nip ] [
dup [ +bottom+ eq? ] trim-left
dup [ +bottom+ eq? ] trim-head
[ [ length ] bi@ - tail* ] keep append
] if
] 3map ;

View File

View File

@ -124,7 +124,7 @@ DEFER: (flat-length)
[ class-types length 1 = ]
[ union-class? not ]
bi and
] contains? ;
] any? ;
: node-count-bias ( -- n )
45 node-count get [-] 8 /i ;

View File

@ -118,7 +118,7 @@ M: #return-recursive unbox-tuples*
! These nodes never participate in unboxing
: assert-not-unboxed ( values -- )
dup array?
[ [ unboxed-allocation ] contains? ] [ unboxed-allocation ] if
[ [ unboxed-allocation ] any? ] [ unboxed-allocation ] if
[ "Unboxing wrong value" throw ] when ;
M: #branch unbox-tuples* dup in-d>> assert-not-unboxed ;

2
basis/concurrency/mailboxes/mailboxes.factor Normal file → Executable file
View File

@ -25,7 +25,7 @@ M: mailbox dispose* threads>> notify-all ;
:: block-unless-pred ( mailbox timeout pred: ( message -- ? ) -- )
mailbox check-disposed
mailbox data>> pred dlist-contains? [
mailbox data>> pred dlist-any? [
mailbox timeout wait-for-mailbox
mailbox timeout pred block-unless-pred
] unless ; inline recursive

2
basis/csv/csv.factor Normal file → Executable file
View File

@ -71,7 +71,7 @@ DEFER: quoted-field ( -- endchar )
delimiter swap with-variable ; inline
: needs-escaping? ( cell -- ? )
[ [ "\n\"" member? ] [ delimiter get = ] bi or ] contains? ; inline ! "
[ [ "\n\"" member? ] [ delimiter get = ] bi or ] any? ; inline
: escape-quotes ( cell -- cell' )
[ [ dup , CHAR: " = [ CHAR: " , ] when ] each ] "" make ; inline

2
basis/db/queries/queries.factor Normal file → Executable file
View File

@ -19,7 +19,7 @@ SINGLETON: retryable
] if ;
: maybe-make-retryable ( statement -- statement )
dup in-params>> [ generator-bind? ] contains?
dup in-params>> [ generator-bind? ] any?
[ make-retryable ] when ;
: regenerate-params ( statement -- statement )

2
basis/db/sqlite/sqlite.factor Normal file → Executable file
View File

@ -294,7 +294,7 @@ M: sqlite-db-connection persistent-table ( -- assoc )
] with-string-writer ;
: can-be-null? ( -- ? )
"sql-spec" get modifiers>> [ +not-null+ = ] contains? not ;
"sql-spec" get modifiers>> [ +not-null+ = ] any? not ;
: delete-cascade? ( -- ? )
"sql-spec" get modifiers>> { +on-delete+ +cascade+ } swap subseq? ;

6
basis/db/types/types.factor Normal file → Executable file
View File

@ -71,10 +71,10 @@ ERROR: not-persistent class ;
primary-key>> +primary-key+? ;
: db-assigned-id-spec? ( specs -- ? )
[ primary-key>> +db-assigned-id+? ] contains? ;
[ primary-key>> +db-assigned-id+? ] any? ;
: user-assigned-id-spec? ( specs -- ? )
[ primary-key>> +user-assigned-id+? ] contains? ;
[ primary-key>> +user-assigned-id+? ] any? ;
: normalize-spec ( spec -- )
dup type>> dup +primary-key+? [
@ -105,7 +105,7 @@ FACTOR-BLOB NULL URL ;
dup normalize-spec ;
: spec>tuple ( class spec -- tuple )
3 f pad-right [ first3 ] keep 3 tail <sql-spec> ;
3 f pad-tail [ first3 ] keep 3 tail <sql-spec> ;
: number>string* ( n/string -- string )
dup number? [ number>string ] when ;

4
basis/dlists/dlists-docs.factor Normal file → Executable file
View File

@ -15,7 +15,7 @@ $nl
"Iterating over elements:"
{ $subsection dlist-each }
{ $subsection dlist-find }
{ $subsection dlist-contains? }
{ $subsection dlist-any? }
"Deleting a node matching a predicate:"
{ $subsection delete-node-if* }
{ $subsection delete-node-if }
@ -40,7 +40,7 @@ HELP: dlist-find
"This operation is O(n)."
} ;
HELP: dlist-contains?
HELP: dlist-any?
{ $values { "dlist" { $link dlist } } { "quot" quotation } { "?" "a boolean" } }
{ $description "Just like " { $link dlist-find } " except it doesn't return the object." }
{ $notes "This operation is O(n)." } ;

4
basis/dlists/dlists-tests.factor Normal file → Executable file
View File

@ -46,8 +46,8 @@ IN: dlists.tests
[ f f ] [ <dlist> [ 1 = ] dlist-find ] unit-test
[ 1 t ] [ <dlist> 1 over push-back [ 1 = ] dlist-find ] unit-test
[ f f ] [ <dlist> 1 over push-back [ 2 = ] dlist-find ] unit-test
[ f ] [ <dlist> 1 over push-back [ 2 = ] dlist-contains? ] unit-test
[ t ] [ <dlist> 1 over push-back [ 1 = ] dlist-contains? ] unit-test
[ f ] [ <dlist> 1 over push-back [ 2 = ] dlist-any? ] unit-test
[ t ] [ <dlist> 1 over push-back [ 1 = ] dlist-any? ] unit-test
[ 1 ] [ <dlist> 1 over push-back [ 1 = ] delete-node-if ] unit-test
[ t ] [ <dlist> 1 over push-back dup [ 1 = ] delete-node-if drop deque-empty? ] unit-test

4
basis/dlists/dlists.factor Normal file → Executable file
View File

@ -117,11 +117,11 @@ M: dlist pop-back* ( dlist -- )
: dlist-find ( dlist quot -- obj/f ? )
'[ obj>> @ ] dlist-find-node [ obj>> t ] [ drop f f ] if ; inline
: dlist-contains? ( dlist quot -- ? )
: dlist-any? ( dlist quot -- ? )
dlist-find nip ; inline
M: dlist deque-member? ( value dlist -- ? )
[ = ] with dlist-contains? ;
[ = ] with dlist-any? ;
M: dlist delete-node ( dlist-node dlist -- )
{

4
basis/farkup/farkup.factor Normal file → Executable file
View File

@ -34,7 +34,7 @@ TUPLE: line ;
TUPLE: line-break ;
: absolute-url? ( string -- ? )
{ "http://" "https://" "ftp://" } [ head? ] with contains? ;
{ "http://" "https://" "ftp://" } [ head? ] with any? ;
: simple-link-title ( string -- string' )
dup absolute-url? [ "/" split1-last swap or ] unless ;
@ -162,7 +162,7 @@ stand-alone
: check-url ( href -- href' )
{
{ [ dup empty? ] [ drop invalid-url ] }
{ [ dup [ 127 > ] contains? ] [ drop invalid-url ] }
{ [ dup [ 127 > ] any? ] [ drop invalid-url ] }
{ [ dup first "/\\" member? ] [ drop invalid-url ] }
{ [ CHAR: : over member? ] [ dup absolute-url? [ drop invalid-url ] unless ] }
[ relative-link-prefix get prepend "" like ]

View File

@ -43,7 +43,7 @@ HELP: printf
"string. For example:\n"
{ $list
"\"%.3s\" formats a string to truncate at 3 characters (from the left)."
"\"%.10f\" formats a float to pad-right with zeros up to 10 digits beyond the decimal point."
"\"%.10f\" formats a float to pad-tail with zeros up to 10 digits beyond the decimal point."
"\"%.5E\" formats a float into scientific notation with zeros up to 5 digits beyond the decimal point, but before the exponent."
}
}

View File

@ -29,7 +29,7 @@ IN: formatting
[ 0 ] [ string>number ] if-empty ;
: pad-digits ( string digits -- string' )
[ "." split1 ] dip [ CHAR: 0 pad-right ] [ head-slice ] bi "." glue ;
[ "." split1 ] dip [ CHAR: 0 pad-tail ] [ head-slice ] bi "." glue ;
: max-digits ( n digits -- n' )
10 swap ^ [ * round ] keep / ; inline
@ -48,7 +48,7 @@ IN: formatting
[ max-digits ] keep -rot
[
[ 0 < "-" "+" ? ]
[ abs number>string 2 CHAR: 0 pad-left ] bi
[ abs number>string 2 CHAR: 0 pad-head ] bi
"e" -rot 3append
]
[ number>string ] bi*
@ -60,7 +60,7 @@ zero = "0" => [[ CHAR: 0 ]]
char = "'" (.) => [[ second ]]
pad-char = (zero|char)? => [[ CHAR: \s or ]]
pad-align = ("-")? => [[ \ pad-right \ pad-left ? ]]
pad-align = ("-")? => [[ \ pad-tail \ pad-head ? ]]
pad-width = ([0-9])* => [[ >digits ]]
pad = pad-align pad-char pad-width => [[ reverse >quotation dup first 0 = [ drop [ ] ] when ]]
@ -110,9 +110,9 @@ MACRO: printf ( format-string -- )
<PRIVATE
: pad-00 ( n -- string ) number>string 2 CHAR: 0 pad-left ; inline
: pad-00 ( n -- string ) number>string 2 CHAR: 0 pad-head ; inline
: pad-000 ( n -- string ) number>string 3 CHAR: 0 pad-left ; inline
: pad-000 ( n -- string ) number>string 3 CHAR: 0 pad-head ; inline
: >time ( timestamp -- string )
[ hour>> ] [ minute>> ] [ second>> floor ] tri 3array

View File

@ -39,7 +39,7 @@ name target ;
: parse-list-11 ( lines -- seq )
[
11 f pad-right
11 f pad-tail
<remote-file> swap {
[ 0 swap nth parse-permissions ]
[ 1 swap nth string>number >>links ]

View File

@ -31,7 +31,7 @@ IN: furnace.auth.features.edit-profile
} validate-params
{ "password" "new-password" "verify-password" }
[ value empty? not ] contains? [
[ value empty? not ] any? [
"password" value username check-login
[ "incorrect password" validation-error ] unless

View File

@ -16,7 +16,7 @@ IN: furnace.auth.login
SYMBOL: permit-id
: permit-id-key ( realm -- string )
[ >hex 2 CHAR: 0 pad-left ] { } map-as concat
[ >hex 2 CHAR: 0 pad-head ] { } map-as concat
"__p_" prepend ;
: client-permit-id ( realm -- id/f )

2
basis/furnace/utilities/utilities.factor Normal file → Executable file
View File

@ -29,7 +29,7 @@ ERROR: no-such-word name vocab ;
: base-path ( string -- pair )
dup responder-nesting get
[ second class superclasses [ name>> = ] with contains? ] with find nip
[ second class superclasses [ name>> = ] with any? ] with find nip
[ first ] [ "No such responder: " swap append throw ] ?if ;
: resolve-base-path ( string -- string' )

4
basis/help/lint/lint.factor Normal file → Executable file
View File

@ -43,7 +43,7 @@ SYMBOL: vocabs-quot
$predicate
$class-description
$error-description
} swap '[ _ elements empty? not ] contains? ;
} swap '[ _ elements empty? not ] any? ;
: don't-check-word? ( word -- ? )
{
@ -103,7 +103,7 @@ SYMBOL: vocabs-quot
[ "Missing whitespace between strings" throw ] unless ;
: check-bogus-nl ( element -- )
{ { $nl } { { $nl } } } [ head? ] with contains?
{ { $nl } { { $nl } } } [ head? ] with any?
[ "Simple element should not begin with a paragraph break" throw ] when ;
: check-elements ( element -- )

View File

@ -55,7 +55,7 @@ TUPLE: html-sub-stream < html-stream style parent ;
: hex-color, ( color -- )
[ red>> ] [ green>> ] [ blue>> ] tri
[ 255 * >fixnum >hex 2 CHAR: 0 pad-left % ] tri@ ;
[ 255 * >fixnum >hex 2 CHAR: 0 pad-head % ] tri@ ;
: fg-css, ( color -- )
"color: #" % hex-color, "; " % ;

View File

@ -86,7 +86,7 @@ SYMBOL: redirects
] [ too-many-redirects ] if ; inline recursive
: read-chunk-size ( -- n )
read-crlf ";" split1 drop [ blank? ] trim-right
read-crlf ";" split1 drop [ blank? ] trim-tail
hex> [ "Bad chunk size" throw ] unless* ;
: read-chunked ( quot: ( chunk -- ) -- )

View File

@ -45,9 +45,9 @@ TUPLE: file-responder root hook special allow-listings ;
[ file-responder get hook>> call ] [ 2drop <304> ] if ;
: serving-path ( filename -- filename )
file-responder get root>> trim-right-separators
file-responder get root>> trim-tail-separators
"/"
rot "" or trim-left-separators 3append ;
rot "" or trim-head-separators 3append ;
: serve-file ( filename -- response )
dup mime-type

View File

@ -15,7 +15,7 @@ IN: io.directories
HOOK: make-directory io-backend ( path -- )
: make-directories ( path -- )
normalize-path trim-right-separators {
normalize-path trim-tail-separators {
{ [ dup "." = ] [ ] }
{ [ dup root-directory? ] [ ] }
{ [ dup empty? ] [ ] }
@ -87,4 +87,4 @@ M: object copy-file
{
{ [ os unix? ] [ "io.directories.unix" require ] }
{ [ os windows? ] [ "io.directories.windows" require ] }
} cond
} cond

View File

@ -25,8 +25,8 @@ IN: io.files.windows.nt.tests
[ t ] [ "\\\\" root-directory? ] unit-test
[ t ] [ "/" root-directory? ] unit-test
[ t ] [ "//" root-directory? ] unit-test
[ t ] [ "c:\\" trim-right-separators root-directory? ] unit-test
[ t ] [ "Z:\\" trim-right-separators root-directory? ] unit-test
[ t ] [ "c:\\" trim-tail-separators root-directory? ] unit-test
[ t ] [ "Z:\\" trim-tail-separators root-directory? ] unit-test
[ f ] [ "c:\\foo" root-directory? ] unit-test
[ f ] [ "." root-directory? ] unit-test
[ f ] [ ".." root-directory? ] unit-test

View File

@ -22,10 +22,10 @@ M: winnt root-directory? ( path -- ? )
{
{ [ dup empty? ] [ drop f ] }
{ [ dup [ path-separator? ] all? ] [ drop t ] }
{ [ dup trim-right-separators { [ length 2 = ]
{ [ dup trim-tail-separators { [ length 2 = ]
[ second CHAR: : = ] } 1&& ] [ drop t ] }
{ [ dup unicode-prefix head? ]
[ trim-right-separators length unicode-prefix length 2 + = ] }
[ trim-tail-separators length unicode-prefix length 2 + = ] }
[ drop f ]
} cond ;

View File

@ -56,7 +56,7 @@ os { winnt linux macosx } member? [
"m" get next-change path>>
dup print flush
dup parent-directory
[ trim-right-separators "xyz" tail? ] either? not
[ trim-tail-separators "xyz" tail? ] either? not
] loop
"c1" get count-down
@ -65,7 +65,7 @@ os { winnt linux macosx } member? [
"m" get next-change path>>
dup print flush
dup parent-directory
[ trim-right-separators "yxy" tail? ] either? not
[ trim-tail-separators "yxy" tail? ] either? not
] loop
"c2" get count-down

View File

@ -118,7 +118,7 @@ M: plain-writer make-block-stream
: format-column ( seq ? -- seq )
[
[ 0 [ length max ] reduce ] keep
swap [ CHAR: \s pad-right ] curry map
swap [ CHAR: \s pad-tail ] curry map
] unless ;
: map-last ( seq quot -- seq )

2
basis/locals/rewrite/point-free/point-free.factor Normal file → Executable file
View File

@ -40,7 +40,7 @@ M: object localize 1quotation ;
! We special-case all the :> at the start of a quotation
: load-locals-quot ( args -- quot )
[ [ ] ] [
dup [ local-reader? ] contains? [
dup [ local-reader? ] any? [
dup [ local-reader? [ 1array ] [ ] ? ] map
spread>quot
] [ [ ] ] if swap length [ load-locals ] curry append

4
basis/locals/rewrite/sugar/sugar.factor Normal file → Executable file
View File

@ -33,9 +33,9 @@ GENERIC: rewrite-literal? ( obj -- ? )
M: special rewrite-literal? drop t ;
M: array rewrite-literal? [ rewrite-literal? ] contains? ;
M: array rewrite-literal? [ rewrite-literal? ] any? ;
M: quotation rewrite-literal? [ rewrite-literal? ] contains? ;
M: quotation rewrite-literal? [ rewrite-literal? ] any? ;
M: wrapper rewrite-literal? wrapped>> rewrite-literal? ;

View File

@ -25,7 +25,7 @@ IN: math.combinatorics
reverse 1 cut [ (>permutation) ] each ;
: permutation-indices ( n seq -- permutation )
length [ factoradic ] dip 0 pad-left >permutation ;
length [ factoradic ] dip 0 pad-head >permutation ;
PRIVATE>

2
basis/math/intervals/intervals.factor Normal file → Executable file
View File

@ -77,7 +77,7 @@ TUPLE: interval { from read-only } { to read-only } ;
[ from>> ] [ to>> ] bi ;
: points>interval ( seq -- interval )
dup [ first fp-nan? ] contains?
dup [ first fp-nan? ] any?
[ drop [-inf,inf] ] [
dup first
[ [ endpoint-min ] reduce ]

View File

@ -6,10 +6,10 @@ IN: math.polynomials
<PRIVATE
: 2pad-left ( p q n -- p q ) [ 0 pad-left ] curry bi@ ;
: 2pad-right ( p q n -- p q ) [ 0 pad-right ] curry bi@ ;
: pextend ( p q -- p q ) 2dup [ length ] bi@ max 2pad-right ;
: pextend-left ( p q -- p q ) 2dup [ length ] bi@ max 2pad-left ;
: 2pad-head ( p q n -- p q ) [ 0 pad-head ] curry bi@ ;
: 2pad-tail ( p q n -- p q ) [ 0 pad-tail ] curry bi@ ;
: pextend ( p q -- p q ) 2dup [ length ] bi@ max 2pad-tail ;
: pextend-left ( p q -- p q ) 2dup [ length ] bi@ max 2pad-head ;
: unempty ( seq -- seq ) [ { 0 } ] when-empty ;
: 2unempty ( seq seq -- seq seq ) [ unempty ] bi@ ;
@ -21,7 +21,7 @@ PRIVATE>
: p= ( p q -- ? ) pextend = ;
: ptrim ( p -- p )
dup length 1 = [ [ zero? ] trim-right ] unless ;
dup length 1 = [ [ zero? ] trim-tail ] unless ;
: 2ptrim ( p q -- p q ) [ ptrim ] bi@ ;
: p+ ( p q -- r ) pextend v+ ;
@ -29,7 +29,7 @@ PRIVATE>
: n*p ( n p -- n*p ) n*v ;
: pextend-conv ( p q -- p q )
2dup [ length ] bi@ + 1- 2pad-right [ >vector ] bi@ ;
2dup [ length ] bi@ + 1- 2pad-tail [ >vector ] bi@ ;
: p* ( p q -- r )
2unempty pextend-conv <reversed> dup length
@ -44,7 +44,7 @@ PRIVATE>
2ptrim
2dup [ length ] bi@ -
dup 1 < [ drop 1 ] when
[ over length + 0 pad-left pextend ] keep 1+ ;
[ over length + 0 pad-head pextend ] keep 1+ ;
: /-last ( seq seq -- a )
#! divide the last two numbers in the sequences

View File

@ -509,7 +509,7 @@ TUPLE: sp-parser p1 ;
M: sp-parser (compile) ( peg -- quot )
p1>> compile-parser 1quotation '[
input-slice [ blank? ] trim-left-slice input-from pos set @
input-slice [ blank? ] trim-head-slice input-from pos set @
] ;
TUPLE: delay-parser quot ;

View File

@ -23,7 +23,7 @@ IN: quoted-printable
: char>quoted ( ch -- str )
dup printable? [ 1string ] [
assure-small >hex >upper
2 CHAR: 0 pad-left
2 CHAR: 0 pad-head
CHAR: = prefix
] if ;

6
basis/sequences/deep/deep-docs.factor Normal file → Executable file
View File

@ -21,10 +21,10 @@ HELP: deep-find
{ $description "Gets the first sub-node of the object, in preorder, which satisfies the quotation. If nothing satisifies it, it returns " { $link f } "." }
{ $see-also find } ;
HELP: deep-contains?
HELP: deep-any?
{ $values { "obj" object } { "quot" { $quotation "( elt -- ? )" } } { "?" "a boolean" } }
{ $description "Tests whether the given object or any subnode satisfies the given quotation." }
{ $see-also contains? } ;
{ $see-also any? } ;
HELP: flatten
{ $values { "obj" object } { "seq" "a sequence" } }
@ -41,7 +41,7 @@ ARTICLE: "sequences.deep" "Deep sequence combinators"
{ $subsection deep-map }
{ $subsection deep-filter }
{ $subsection deep-find }
{ $subsection deep-contains? }
{ $subsection deep-any? }
{ $subsection deep-change-each }
"A utility word to collapse nested subsequences:"
{ $subsection flatten } ;

2
basis/sequences/deep/deep-tests.factor Normal file → Executable file
View File

@ -19,7 +19,7 @@ IN: sequences.deep.tests
[ { { "heyhello" "hihello" } } ]
[ "hey" 1array 1array [ [ change-something ] deep-change-each ] keep ] unit-test
[ t ] [ "foo" [ string? ] deep-contains? ] unit-test
[ t ] [ "foo" [ string? ] deep-any? ] unit-test
[ "foo" ] [ "foo" [ string? ] deep-find ] unit-test

4
basis/sequences/deep/deep.factor Normal file → Executable file
View File

@ -33,10 +33,10 @@ M: object branch? drop f ;
: deep-find ( obj quot -- elt ) (deep-find) drop ; inline
: deep-contains? ( obj quot -- ? ) (deep-find) nip ; inline
: deep-any? ( obj quot -- ? ) (deep-find) nip ; inline
: deep-all? ( obj quot -- ? )
'[ @ not ] deep-contains? not ; inline
'[ @ not ] deep-any? not ; inline
: deep-member? ( obj seq -- ? )
swap '[

View File

@ -14,7 +14,7 @@ TR: soundex-tr
[ 2 <clumps> [ = not ] assoc-filter values ] [ first ] bi prefix ;
: first>upper ( seq -- seq' ) 1 head >upper ;
: trim-first ( seq -- seq' ) dup first [ = ] curry trim-left ;
: trim-first ( seq -- seq' ) dup first [ = ] curry trim-head ;
: remove-zeroes ( seq -- seq' ) CHAR: 0 swap remove ;
: remove-non-alpha ( seq -- seq' ) [ alpha? ] filter ;
: pad-4 ( first seq -- seq' ) "000" 3append 4 head ;

2
basis/stack-checker/backend/backend.factor Normal file → Executable file
View File

@ -147,7 +147,7 @@ M: object apply-object push-literal ;
{
{ [ dup deferred? ] [ drop f ] }
{ [ dup crossref? not ] [ drop f ] }
[ def>> [ word? ] contains? ]
[ def>> [ word? ] any? ]
} cond ;
: ?missing-effect ( word -- )

4
basis/stack-checker/branches/branches.factor Normal file → Executable file
View File

@ -17,7 +17,7 @@ SYMBOL: +bottom+
: pad-with-bottom ( seq -- newseq )
dup empty? [
dup [ length ] map supremum
'[ _ +bottom+ pad-left ] map
'[ _ +bottom+ pad-head ] map
] unless ;
: phi-inputs ( max-d-in pairs -- newseq )
@ -108,7 +108,7 @@ M: callable infer-branch
(infer-if)
] [
drop 2 consume-d
dup [ known [ curried? ] [ composed? ] bi or ] contains? [
dup [ known [ curried? ] [ composed? ] bi or ] any? [
output-d
[ rot [ drop call ] [ nip call ] if ]
infer-quot-here

6
basis/stack-checker/transforms/transforms.factor Normal file → Executable file
View File

@ -125,9 +125,9 @@ IN: stack-checker.transforms
#! Can we use a fast byte array test here?
{
{ [ dup length 8 < ] [ f ] }
{ [ dup [ integer? not ] contains? ] [ f ] }
{ [ dup [ 0 < ] contains? ] [ f ] }
{ [ dup [ bit-member-n >= ] contains? ] [ f ] }
{ [ dup [ integer? not ] any? ] [ f ] }
{ [ dup [ 0 < ] any? ] [ f ] }
{ [ dup [ bit-member-n >= ] any? ] [ f ] }
[ t ]
} cond nip ;

2
basis/syndication/syndication.factor Normal file → Executable file
View File

@ -80,7 +80,7 @@ TUPLE: entry title url description date ;
[ atom-entry-link >>url ]
[
{ "content" "summary" } any-tag-named
dup children>> [ string? not ] contains?
dup children>> [ string? not ] any?
[ children>> xml>string ]
[ children>string ] if >>description
]

2
basis/tools/crossref/crossref-tests.factor Normal file → Executable file
View File

@ -10,4 +10,4 @@ M: integer foo + ;
"resource:basis/tools/crossref/test/foo.factor" run-file
[ t ] [ integer \ foo method \ + usage member? ] unit-test
[ t ] [ \ foo usage [ pathname? ] contains? ] unit-test
[ t ] [ \ foo usage [ pathname? ] any? ] unit-test

View File

@ -59,8 +59,8 @@ SINGLETON: udis-disassembler
dup [ second length ] map supremum
'[
[
[ first >hex cell 2 * CHAR: 0 pad-left % ": " % ]
[ second _ CHAR: \s pad-right % " " % ]
[ first >hex cell 2 * CHAR: 0 pad-head % ": " % ]
[ second _ CHAR: \s pad-tail % " " % ]
[ third % ]
tri
] "" make

View File

@ -9,22 +9,22 @@ IN: tools.files
: dir-or-size ( file-info -- str )
dup directory? [
drop "<DIR>" 20 CHAR: \s pad-right
drop "<DIR>" 20 CHAR: \s pad-tail
] [
size>> number>string 20 CHAR: \s pad-left
size>> number>string 20 CHAR: \s pad-head
] if ;
: listing-time ( timestamp -- string )
[ hour>> ] [ minute>> ] bi
[ number>string 2 CHAR: 0 pad-left ] bi@ ":" glue ;
[ number>string 2 CHAR: 0 pad-head ] bi@ ":" glue ;
: listing-date ( timestamp -- string )
[ month>> month-abbreviation ]
[ day>> number>string 2 CHAR: \s pad-left ]
[ day>> number>string 2 CHAR: \s pad-head ]
[
dup year>> dup now year>> =
[ drop listing-time ] [ nip number>string ] if
5 CHAR: \s pad-left
5 CHAR: \s pad-head
] tri 3array " " join ;
: read>string ( ? -- string ) "r" "-" ? ; inline

View File

@ -12,13 +12,13 @@ IN: tools.hexdump
[ >hex write "h" write nl ] bi ;
: write-offset ( lineno -- )
16 * >hex 8 CHAR: 0 pad-left write "h: " write ;
16 * >hex 8 CHAR: 0 pad-head write "h: " write ;
: >hex-digit ( digit -- str )
>hex 2 CHAR: 0 pad-left " " append ;
>hex 2 CHAR: 0 pad-head " " append ;
: >hex-digits ( bytes -- str )
[ >hex-digit ] { } map-as concat 48 CHAR: \s pad-right ;
[ >hex-digit ] { } map-as concat 48 CHAR: \s pad-tail ;
: >ascii ( bytes -- str )
[ [ printable? ] keep CHAR: . ? ] "" map-as ;

4
basis/tools/scaffold/scaffold.factor Normal file → Executable file
View File

@ -22,7 +22,7 @@ ERROR: no-vocab vocab ;
: contains-dot? ( string -- ? ) ".." swap subseq? ;
: contains-separator? ( string -- ? ) [ path-separator? ] contains? ;
: contains-separator? ( string -- ? ) [ path-separator? ] any? ;
: check-vocab-name ( string -- string )
dup contains-dot? [ vocab-name-contains-dot ] when
@ -92,7 +92,7 @@ ERROR: no-vocab vocab ;
] if ;
: lookup-type ( string -- object/string ? )
"new" ?head drop [ [ CHAR: ' = ] [ digit? ] bi or ] trim-right
"new" ?head drop [ [ CHAR: ' = ] [ digit? ] bi or ] trim-tail
H{
{ "object" object } { "obj" object }
{ "quot" quotation }

View File

@ -9,8 +9,8 @@ IN: tools.vocabs.monitor
TR: convert-separators "/\\" ".." ;
: vocab-dir>vocab-name ( path -- vocab )
trim-left-separators
trim-right-separators
trim-head-separators
trim-tail-separators
convert-separators ;
: path>vocab-name ( path -- vocab )

View File

@ -144,7 +144,7 @@ M: world selection-notify-event
: supported-type? ( atom -- ? )
{ "UTF8_STRING" "STRING" "TEXT" }
[ x-atom = ] with contains? ;
[ x-atom = ] with any? ;
: clipboard-for-atom ( atom -- clipboard )
{

4
basis/unicode/collation/collation.factor Normal file → Executable file
View File

@ -88,7 +88,7 @@ ducet insert-helpers
: add ( char -- )
dup blocked? [ 1string , ] [
dup possible-bases dup length
[ ?combine ] with with contains?
[ ?combine ] with with any?
[ drop ] [ 1string , ] if
] if ;
@ -138,7 +138,7 @@ PRIVATE>
: insensitive= ( str1 str2 levels-removed -- ? )
[
[ collation-key ] dip
[ [ 0 = not ] trim-right but-last ] times
[ [ 0 = not ] trim-tail but-last ] times
] curry bi@ = ;
PRIVATE>

View File

@ -72,7 +72,7 @@ VALUE: properties
: exclusions ( -- set )
exclusions-file utf8 file-lines
[ "#" split1 drop [ blank? ] trim-right hex> ] map harvest ;
[ "#" split1 drop [ blank? ] trim-tail hex> ] map harvest ;
: remove-exclusions ( alist -- alist )
exclusions [ dup ] H{ } map>assoc assoc-diff ;

View File

@ -33,7 +33,7 @@ HOOK: new-utmpx-record os ( -- utmpx-record )
HOOK: utmpx>utmpx-record os ( utmpx -- utmpx-record )
: memory>string ( alien n -- string )
memory>byte-array utf8 decode [ 0 = ] trim-right ;
memory>byte-array utf8 decode [ 0 = ] trim-tail ;
M: unix new-utmpx-record
utmpx-record new ;

View File

@ -18,7 +18,7 @@ IN: urls.encoding
: push-utf8 ( ch -- )
1string utf8 encode
[ CHAR: % , >hex 2 CHAR: 0 pad-left % ] each ;
[ CHAR: % , >hex 2 CHAR: 0 pad-head % ] each ;
PRIVATE>

View File

@ -43,7 +43,7 @@ IN: uuid
] dip 76 shift bitor ;
: uuid>string ( n -- string )
>hex 32 CHAR: 0 pad-left
>hex 32 CHAR: 0 pad-head
[ CHAR: - 20 ] dip insert-nth
[ CHAR: - 16 ] dip insert-nth
[ CHAR: - 12 ] dip insert-nth

View File

@ -163,10 +163,10 @@ M: ole32-error error.
] keep ;
: (guid-section%) ( guid quot len -- )
[ call >hex ] dip CHAR: 0 pad-left % ; inline
[ call >hex ] dip CHAR: 0 pad-head % ; inline
: (guid-byte%) ( guid byte -- )
swap nth >hex 2 CHAR: 0 pad-left % ; inline
swap nth >hex 2 CHAR: 0 pad-head % ; inline
: guid>string ( guid -- string )
[

2
basis/xml/utilities/utilities.factor Normal file → Executable file
View File

@ -8,7 +8,7 @@ IN: xml.utilities
: children>string ( tag -- string )
children>> {
{ [ dup empty? ] [ drop "" ] }
{ [ dup [ string? not ] contains? ]
{ [ dup [ string? not ] any? ]
[ "XML tag unexpectedly contains non-text children" throw ] }
[ concat ]
} cond ;

2
basis/xml/writer/writer.factor Normal file → Executable file
View File

@ -15,7 +15,7 @@ SYMBOL: xml-pprint?
SYMBOL: indentation
: sensitive? ( tag -- ? )
sensitive-tags get swap '[ _ names-match? ] contains? ;
sensitive-tags get swap '[ _ names-match? ] any? ;
: indent-string ( -- string )
xml-pprint? get

4
basis/xml/xml.factor Normal file → Executable file
View File

@ -30,7 +30,7 @@ M: prolog process
: before-main? ( -- ? )
xml-stack get {
[ length 1 = ]
[ first second [ tag? ] contains? not ]
[ first second [ tag? ] any? not ]
} 1&& ;
M: directive process
@ -76,7 +76,7 @@ M: closer process
: no-post-tags ( post -- post/* )
! this does *not* affect the contents of the stack
dup [ tag? ] contains? [ multitags ] when ;
dup [ tag? ] any? [ multitags ] when ;
: assure-tags ( seq -- seq )
! this does *not* affect the contents of the stack

2
basis/xmode/marker/marker.factor Normal file → Executable file
View File

@ -15,7 +15,7 @@ ascii combinators.short-circuit accessors ;
: keyword-number? ( keyword -- ? )
{
[ current-rule-set highlight-digits?>> ]
[ dup [ digit? ] contains? ]
[ dup [ digit? ] any? ]
[
dup [ digit? ] all? [
current-rule-set digit-re>>

6
core/assocs/assocs-docs.factor Normal file → Executable file
View File

@ -82,7 +82,7 @@ ARTICLE: "assocs-sets" "Set-theoretic operations on assocs"
{ $subsection substitute }
{ $subsection substitute-here }
{ $subsection extract-keys }
{ $see-also key? assoc-contains? assoc-all? "sets" } ;
{ $see-also key? assoc-any? assoc-all? "sets" } ;
ARTICLE: "assocs-mutation" "Storing keys and values in assocs"
"Utility operations built up from the " { $link "assocs-protocol" } ":"
@ -115,7 +115,7 @@ $nl
{ $subsection assoc-map }
{ $subsection assoc-filter }
{ $subsection assoc-filter-as }
{ $subsection assoc-contains? }
{ $subsection assoc-any? }
{ $subsection assoc-all? }
"Additional combinators:"
{ $subsection cache }
@ -231,7 +231,7 @@ HELP: assoc-filter-as
{ assoc-filter assoc-filter-as } related-words
HELP: assoc-contains?
HELP: assoc-any?
{ $values { "assoc" assoc } { "quot" { $quotation "( key value -- ? )" } } { "?" "a boolean" } }
{ $description "Tests if the assoc contains an entry satisfying a predicate by applying the quotation to each entry in turn. Iteration stops if an entry is found for which the quotation outputs a true value." } ;

4
core/assocs/assocs.factor Normal file → Executable file
View File

@ -70,11 +70,11 @@ PRIVATE>
[ (assoc-each) partition ] [ drop ] 2bi
tuck [ assoc-like ] 2bi@ ; inline
: assoc-contains? ( assoc quot -- ? )
: assoc-any? ( assoc quot -- ? )
assoc-find 2nip ; inline
: assoc-all? ( assoc quot -- ? )
[ not ] compose assoc-contains? not ; inline
[ not ] compose assoc-any? not ; inline
: at ( key assoc -- value/f )
at* drop ; inline

View File

@ -25,4 +25,4 @@ M: checksum checksum-lines
[ normalize-path (file-reader) ] dip checksum-stream ;
: hex-string ( seq -- str )
[ >hex 2 CHAR: 0 pad-left ] { } map-as concat ;
[ >hex 2 CHAR: 0 pad-head ] { } map-as concat ;

8
core/classes/algebra/algebra.factor Normal file → Executable file
View File

@ -66,10 +66,10 @@ DEFER: (class-or)
[ members>> ] dip [ class<= ] curry all? ;
: right-anonymous-union<= ( first second -- ? )
members>> [ class<= ] with contains? ;
members>> [ class<= ] with any? ;
: left-anonymous-intersection<= ( first second -- ? )
[ participants>> ] dip [ class<= ] curry contains? ;
[ participants>> ] dip [ class<= ] curry any? ;
: right-anonymous-intersection<= ( first second -- ? )
participants>> [ class<= ] with all? ;
@ -125,7 +125,7 @@ PREDICATE: empty-intersection < anonymous-intersection participants>> empty? ;
] if ;
M: anonymous-union (classes-intersect?)
members>> [ classes-intersect? ] with contains? ;
members>> [ classes-intersect? ] with any? ;
M: anonymous-intersection (classes-intersect?)
participants>> [ classes-intersect? ] with all? ;
@ -203,7 +203,7 @@ M: anonymous-complement (classes-intersect?)
[ class<= ] [ swap class<= ] 2bi and ;
: largest-class ( seq -- n elt )
dup [ [ class< ] with contains? not ] curry find-last
dup [ [ class< ] with any? not ] curry find-last
[ "Topological sort failed" throw ] unless* ;
: sort-classes ( seq -- newseq )

2
core/classes/builtin/builtin-tests.factor Normal file → Executable file
View File

@ -6,5 +6,5 @@ USING: tools.test words sequences kernel memory accessors ;
[
[ name>> "f?" = ]
[ vocabulary>> "syntax" = ] bi and
] contains?
] any?
] unit-test

2
core/classes/tuple/tuple.factor Normal file → Executable file
View File

@ -148,7 +148,7 @@ ERROR: bad-superclass class ;
: tuple-prototype ( class -- prototype )
[ initial-values ] keep
over [ ] contains? [ slots>tuple ] [ 2drop f ] if ;
over [ ] any? [ slots>tuple ] [ 2drop f ] if ;
: define-tuple-prototype ( class -- )
dup tuple-prototype "prototype" set-word-prop ;

2
core/classes/union/union.factor Normal file → Executable file
View File

@ -31,7 +31,7 @@ M: union-class update-class define-union-predicate ;
M: union-class rank-class drop 2 ;
M: union-class instance?
"members" word-prop [ instance? ] with contains? ;
"members" word-prop [ instance? ] with any? ;
M: union-class (flatten-class)
members <anonymous-union> (flatten-class) ;

4
core/combinators/combinators.factor Normal file → Executable file
View File

@ -127,9 +127,9 @@ ERROR: no-case ;
: case>quot ( default assoc -- quot )
dup keys {
{ [ dup empty? ] [ 2drop ] }
{ [ dup [ length 4 <= ] [ [ word? ] contains? ] bi or ] [ drop linear-case-quot ] }
{ [ dup [ length 4 <= ] [ [ word? ] any? ] bi or ] [ drop linear-case-quot ] }
{ [ dup contiguous-range? ] [ drop dispatch-case-quot ] }
{ [ dup [ wrapper? ] contains? not ] [ drop hash-case-quot ] }
{ [ dup [ wrapper? ] any? not ] [ drop hash-case-quot ] }
{ [ dup [ wrapper? ] all? ] [ drop [ [ wrapped>> ] dip ] assoc-map hash-case-quot ] }
[ drop linear-case-quot ]
} cond ;

8
core/generic/generic-tests.factor Normal file → Executable file
View File

@ -141,7 +141,7 @@ M: integer generic-forget-test-1 / ;
[ t ] [
\ / usage [ word? ] filter
[ name>> "integer=>generic-forget-test-1" = ] contains?
[ name>> "integer=>generic-forget-test-1" = ] any?
] unit-test
[ ] [
@ -150,7 +150,7 @@ M: integer generic-forget-test-1 / ;
[ f ] [
\ / usage [ word? ] filter
[ name>> "integer=>generic-forget-test-1" = ] contains?
[ name>> "integer=>generic-forget-test-1" = ] any?
] unit-test
GENERIC: generic-forget-test-2 ( a b -- c )
@ -159,7 +159,7 @@ M: sequence generic-forget-test-2 = ;
[ t ] [
\ = usage [ word? ] filter
[ name>> "sequence=>generic-forget-test-2" = ] contains?
[ name>> "sequence=>generic-forget-test-2" = ] any?
] unit-test
[ ] [
@ -168,7 +168,7 @@ M: sequence generic-forget-test-2 = ;
[ f ] [
\ = usage [ word? ] filter
[ name>> "sequence=>generic-forget-test-2" = ] contains?
[ name>> "sequence=>generic-forget-test-2" = ] any?
] unit-test
GENERIC: generic-forget-test-3 ( a -- b )

View File

@ -10,11 +10,11 @@ SYMBOL: current-directory
: path-separator ( -- string ) os windows? "\\" "/" ? ;
: trim-right-separators ( str -- newstr )
[ path-separator? ] trim-right ;
: trim-tail-separators ( str -- newstr )
[ path-separator? ] trim-tail ;
: trim-left-separators ( str -- newstr )
[ path-separator? ] trim-left ;
: trim-head-separators ( str -- newstr )
[ path-separator? ] trim-head ;
: last-path-separator ( path -- n ? )
[ length 1- ] keep [ path-separator? ] find-last-from ;
@ -28,7 +28,7 @@ ERROR: no-parent-directory path ;
: parent-directory ( path -- parent )
dup root-directory? [
trim-right-separators
trim-tail-separators
dup last-path-separator [
1+ cut
] [
@ -55,7 +55,7 @@ ERROR: no-parent-directory path ;
: append-path-empty ( path1 path2 -- path' )
{
{ [ dup head.? ] [
rest trim-left-separators append-path-empty
rest trim-head-separators append-path-empty
] }
{ [ dup head..? ] [ drop no-parent-directory ] }
[ nip ]
@ -84,19 +84,19 @@ PRIVATE>
{
{ [ over empty? ] [ append-path-empty ] }
{ [ dup empty? ] [ drop ] }
{ [ over trim-right-separators "." = ] [ nip ] }
{ [ over trim-tail-separators "." = ] [ nip ] }
{ [ dup absolute-path? ] [ nip ] }
{ [ dup head.? ] [ rest trim-left-separators append-path ] }
{ [ dup head.? ] [ rest trim-head-separators append-path ] }
{ [ dup head..? ] [
2 tail trim-left-separators
2 tail trim-head-separators
[ parent-directory ] dip append-path
] }
{ [ over absolute-path? over first path-separator? and ] [
[ 2 head ] dip append
] }
[
[ trim-right-separators "/" ] dip
trim-left-separators 3append
[ trim-tail-separators "/" ] dip
trim-head-separators 3append
]
} cond ;
@ -105,7 +105,7 @@ PRIVATE>
: file-name ( path -- string )
dup root-directory? [
trim-right-separators
trim-tail-separators
dup last-path-separator [ 1+ tail ] [
drop "resource:" ?head [ file-name ] when
] if
@ -121,7 +121,7 @@ GENERIC: (normalize-path) ( path -- path' )
M: string (normalize-path)
"resource:" ?head [
trim-left-separators resource-path
trim-head-separators resource-path
(normalize-path)
] [
current-directory get prepend-path
@ -140,4 +140,4 @@ M: pathname <=> [ string>> ] compare ;
HOOK: home io-backend ( -- dir )
M: object home "" resource-path ;
M: object home "" resource-path ;

42
core/sequences/sequences-docs.factor Normal file → Executable file
View File

@ -393,7 +393,7 @@ HELP: find-last-from
{ $values { "n" "a starting index" } { "seq" sequence } { "quot" { $quotation "( elt -- ? )" } } { "i" "the index of the first match, or f" } { "elt" "the first matching element, or " { $link f } } }
{ $description "Applies the quotation to each element of the sequence in reverse order, until it outputs a true value or the start of the sequence is reached. If the quotation yields a true value for some sequence element, the word outputs the element index and the element itself. Otherwise, the word outputs an index of f and " { $link f } " as the element." } ;
HELP: contains?
HELP: any?
{ $values { "seq" sequence } { "quot" { $quotation "( elt -- ? )" } } { "?" "a boolean" } }
{ $description "Tests if the sequence contains an element satisfying the predicate, by applying the predicate to each element in turn until a true value is found. If the sequence is empty or if the end of the sequence is reached, outputs " { $link f } "." } ;
@ -575,15 +575,15 @@ HELP: padding
{ $values { "seq" sequence } { "n" "a non-negative integer" } { "elt" object } { "quot" { $quotation "( seq1 seq2 -- newseq )" } } { "newseq" "a new sequence" } }
{ $description "Outputs a new string sequence of " { $snippet "elt" } " repeated, that when appended to " { $snippet "seq" } ", yields a sequence of length " { $snippet "n" } ". If the length of " { $snippet "seq" } " is greater than " { $snippet "n" } ", this word outputs an empty sequence." } ;
HELP: pad-left
HELP: pad-head
{ $values { "seq" sequence } { "n" "a non-negative integer" } { "elt" object } { "padded" "a new sequence" } }
{ $description "Outputs a new sequence consisting of " { $snippet "seq" } " padded on the left with enough repetitions of " { $snippet "elt" } " to have the result be of length " { $snippet "n" } "." }
{ $examples { $example "USING: io sequences ;" "{ \"ab\" \"quux\" } [ 5 CHAR: - pad-left print ] each" "---ab\n-quux" } } ;
{ $examples { $example "USING: io sequences ;" "{ \"ab\" \"quux\" } [ 5 CHAR: - pad-head print ] each" "---ab\n-quux" } } ;
HELP: pad-right
HELP: pad-tail
{ $values { "seq" sequence } { "n" "a non-negative integer" } { "elt" object } { "padded" "a new sequence" } }
{ $description "Outputs a new sequence consisting of " { $snippet "seq" } " padded on the right with enough repetitions of " { $snippet "elt" } " to have the result be of length " { $snippet "n" } "." }
{ $examples { $example "USING: io sequences ;" "{ \"ab\" \"quux\" } [ 5 CHAR: - pad-right print ] each" "ab---\nquux-" } } ;
{ $examples { $example "USING: io sequences ;" "{ \"ab\" \"quux\" } [ 5 CHAR: - pad-tail print ] each" "ab---\nquux-" } } ;
HELP: sequence=
{ $values { "seq1" sequence } { "seq2" sequence } { "?" "a boolean" } }
@ -960,43 +960,43 @@ HELP: pusher
}
{ $notes "Used to implement the " { $link filter } " word." } ;
HELP: trim-left
HELP: trim-head
{ $values
{ "seq" sequence } { "quot" quotation }
{ "newseq" sequence } }
{ $description "Removes elements starting from the left side of a sequence if they match a predicate. Once an element does not match, the test stops and the rest of the sequence is left on the stack as a new sequence." }
{ $example "" "USING: prettyprint math sequences ;"
"{ 0 0 1 2 3 0 0 } [ zero? ] trim-left ."
"{ 0 0 1 2 3 0 0 } [ zero? ] trim-head ."
"{ 1 2 3 0 0 }"
} ;
HELP: trim-left-slice
HELP: trim-head-slice
{ $values
{ "seq" sequence } { "quot" quotation }
{ "slice" slice } }
{ $description "Removes elements starting from the left side of a sequence if they match a predicate. Once an element does not match, the test stops and the rest of the sequence is left on the stack as a slice" }
{ $example "" "USING: prettyprint math sequences ;"
"{ 0 0 1 2 3 0 0 } [ zero? ] trim-left-slice ."
"{ 0 0 1 2 3 0 0 } [ zero? ] trim-head-slice ."
"T{ slice { from 2 } { to 7 } { seq { 0 0 1 2 3 0 0 } } }"
} ;
HELP: trim-right
HELP: trim-tail
{ $values
{ "seq" sequence } { "quot" quotation }
{ "newseq" sequence } }
{ $description "Removes elements starting from the right side of a sequence if they match a predicate. Once an element does not match, the test stops and the rest of the sequence is left on the stack as a new sequence." }
{ $example "" "USING: prettyprint math sequences ;"
"{ 0 0 1 2 3 0 0 } [ zero? ] trim-right ."
"{ 0 0 1 2 3 0 0 } [ zero? ] trim-tail ."
"{ 0 0 1 2 3 }"
} ;
HELP: trim-right-slice
HELP: trim-tail-slice
{ $values
{ "seq" sequence } { "quot" quotation }
{ "slice" slice } }
{ $description "Removes elements starting from the right side of a sequence if they match a predicate. Once an element does not match, the test stops and the rest of the sequence is left on the stack as a slice." }
{ $example "" "USING: prettyprint math sequences ;"
"{ 0 0 1 2 3 0 0 } [ zero? ] trim-right-slice ."
"{ 0 0 1 2 3 0 0 } [ zero? ] trim-tail-slice ."
"T{ slice { from 0 } { to 5 } { seq { 0 0 1 2 3 0 0 } } }"
} ;
@ -1020,7 +1020,7 @@ HELP: trim-slice
"T{ slice { from 2 } { to 5 } { seq { 0 0 1 2 3 0 0 } } }"
} ;
{ trim trim-slice trim-left trim-left-slice trim-right trim-right-slice } related-words
{ trim trim-slice trim-head trim-head-slice trim-tail trim-tail-slice } related-words
HELP: sift
{ $values
@ -1407,8 +1407,8 @@ ARTICLE: "sequences-appending" "Appending sequences"
{ $subsection concat }
{ $subsection join }
"A pair of words useful for aligning strings:"
{ $subsection pad-left }
{ $subsection pad-right } ;
{ $subsection pad-head }
{ $subsection pad-tail } ;
ARTICLE: "sequences-slices" "Subsequences and slices"
"Extracting a subsequence:"
@ -1463,7 +1463,7 @@ ARTICLE: "sequences-combinators" "Sequence combinators"
{ $subsection push-if }
{ $subsection filter }
"Testing if a sequence contains elements satisfying a predicate:"
{ $subsection contains? }
{ $subsection any? }
{ $subsection all? }
{ $subsection "sequence-2combinators" }
{ $subsection "sequence-3combinators" } ;
@ -1513,12 +1513,12 @@ ARTICLE: "sequences-search" "Searching sequences"
ARTICLE: "sequences-trimming" "Trimming sequences"
"Trimming words:"
{ $subsection trim }
{ $subsection trim-left }
{ $subsection trim-right }
{ $subsection trim-head }
{ $subsection trim-tail }
"Potentially more efficient trim:"
{ $subsection trim-slice }
{ $subsection trim-left-slice }
{ $subsection trim-right-slice } ;
{ $subsection trim-head-slice }
{ $subsection trim-tail-slice } ;
ARTICLE: "sequences-destructive-discussion" "When to use destructive operations"
"Constructive (non-destructive) operations should be preferred where possible because code without side-effects is usually more re-usable and easier to reason about. There are two main reasons to use destructive operations:"

View File

@ -225,13 +225,13 @@ unit-test
[ -1./0. 0 delete-nth ] must-fail
[ "" ] [ "" [ CHAR: \s = ] trim ] unit-test
[ "" ] [ "" [ CHAR: \s = ] trim-left ] unit-test
[ "" ] [ "" [ CHAR: \s = ] trim-right ] unit-test
[ "" ] [ " " [ CHAR: \s = ] trim-left ] unit-test
[ "" ] [ " " [ CHAR: \s = ] trim-right ] unit-test
[ "" ] [ "" [ CHAR: \s = ] trim-head ] unit-test
[ "" ] [ "" [ CHAR: \s = ] trim-tail ] unit-test
[ "" ] [ " " [ CHAR: \s = ] trim-head ] unit-test
[ "" ] [ " " [ CHAR: \s = ] trim-tail ] unit-test
[ "asdf" ] [ " asdf " [ CHAR: \s = ] trim ] unit-test
[ "asdf " ] [ " asdf " [ CHAR: \s = ] trim-left ] unit-test
[ " asdf" ] [ " asdf " [ CHAR: \s = ] trim-right ] unit-test
[ "asdf " ] [ " asdf " [ CHAR: \s = ] trim-head ] unit-test
[ " asdf" ] [ " asdf " [ CHAR: \s = ] trim-tail ] unit-test
[ 328350 ] [ 100 [ sq ] sigma ] unit-test

24
core/sequences/sequences.factor Normal file → Executable file
View File

@ -524,14 +524,14 @@ PRIVATE>
: nths ( indices seq -- seq' )
[ nth ] curry map ;
: contains? ( seq quot -- ? )
: any? ( seq quot -- ? )
find drop >boolean ; inline
: member? ( elt seq -- ? )
[ = ] with contains? ;
[ = ] with any? ;
: memq? ( elt seq -- ? )
[ eq? ] with contains? ;
[ eq? ] with any? ;
: remove ( elt seq -- newseq )
[ = not ] with filter ;
@ -711,10 +711,10 @@ PRIVATE>
[ <repetition> ] curry
] dip compose if ; inline
: pad-left ( seq n elt -- padded )
: pad-head ( seq n elt -- padded )
[ swap dup append-as ] padding ;
: pad-right ( seq n elt -- padded )
: pad-tail ( seq n elt -- padded )
[ append ] padding ;
: shorter? ( seq1 seq2 -- ? ) [ length ] bi@ < ;
@ -816,22 +816,22 @@ PRIVATE>
dup slice? [ { } like ] when 0 over length rot <slice> ;
inline
: trim-left-slice ( seq quot -- slice )
: trim-head-slice ( seq quot -- slice )
over [ [ not ] compose find drop ] dip swap
[ tail-slice ] [ dup length tail-slice ] if* ; inline
: trim-left ( seq quot -- newseq )
over [ trim-left-slice ] dip like ; inline
: trim-head ( seq quot -- newseq )
over [ trim-head-slice ] dip like ; inline
: trim-right-slice ( seq quot -- slice )
: trim-tail-slice ( seq quot -- slice )
over [ [ not ] compose find-last drop ] dip swap
[ 1+ head-slice ] [ 0 head-slice ] if* ; inline
: trim-right ( seq quot -- newseq )
over [ trim-right-slice ] dip like ; inline
: trim-tail ( seq quot -- newseq )
over [ trim-tail-slice ] dip like ; inline
: trim-slice ( seq quot -- slice )
[ trim-left-slice ] [ trim-right-slice ] bi ; inline
[ trim-head-slice ] [ trim-tail-slice ] bi ; inline
: trim ( seq quot -- newseq )
over [ trim-slice ] dip like ; inline

2
core/sets/sets-docs.factor Normal file → Executable file
View File

@ -22,7 +22,7 @@ $nl
"Adding elements to sets:"
{ $subsection adjoin }
{ $subsection conjoin }
{ $see-also member? memq? contains? all? "assocs-sets" } ;
{ $see-also member? memq? any? all? "assocs-sets" } ;
ABOUT: "sets"

2
core/sets/sets.factor Normal file → Executable file
View File

@ -41,7 +41,7 @@ PRIVATE>
tester filter ;
: intersects? ( seq1 seq2 -- ? )
tester contains? ;
tester any? ;
: diff ( seq1 seq2 -- newseq )
tester [ not ] compose filter ;

View File

@ -43,8 +43,8 @@ IN: strings.tests
]
unit-test
[ "05" ] [ "5" 2 CHAR: 0 pad-left ] unit-test
[ "666" ] [ "666" 2 CHAR: 0 pad-left ] unit-test
[ "05" ] [ "5" 2 CHAR: 0 pad-head ] unit-test
[ "666" ] [ "666" 2 CHAR: 0 pad-head ] unit-test
[ 1 "" nth ] must-fail
[ -6 "hello" nth ] must-fail

2
core/words/words-tests.factor Normal file → Executable file
View File

@ -188,7 +188,7 @@ SYMBOL: quot-uses-b
[
all-words [
"compiled-uses" word-prop
keys [ "forgotten" word-prop ] contains?
keys [ "forgotten" word-prop ] any?
] filter
] unit-test

2
core/words/words.factor Normal file → Executable file
View File

@ -144,7 +144,7 @@ SYMBOL: visited
crossref get at keys
[ word? ] filter
[
[ reset-on-redefine [ word-prop ] with contains? ]
[ reset-on-redefine [ word-prop ] with any? ]
[ inline? ]
bi or
] filter

View File

@ -22,7 +22,7 @@ VAR: rule VAR: rule-number
{ 0 0 1 }
{ 0 0 0 } } ;
: rule-values ( n -- seq ) >bin 8 CHAR: 0 pad-left string>digits ;
: rule-values ( n -- seq ) >bin 8 CHAR: 0 pad-head string>digits ;
: set-rule ( n -- )
dup >rule-number rule-values rule-keys [ rule> set-at ] 2each ;

4
extra/benchmark/beust2/beust2.factor Normal file → Executable file
View File

@ -26,10 +26,10 @@ IN: benchmark.beust2
] if
] [ f ] if
]
] contains? ; inline recursive
] any? ; inline recursive
:: count-numbers ( max listener -- )
10 [ 1+ 1 1 0 max listener (count-numbers) ] contains? drop ;
10 [ 1+ 1 1 0 max listener (count-numbers) ] any? drop ;
inline
:: beust ( -- )

View File

@ -8,7 +8,7 @@ IN: benchmark.knucleotide
swap >float number>string
"." split1 rot
over length over <
[ CHAR: 0 pad-right ]
[ CHAR: 0 pad-tail ]
[ head ] if "." glue ;
: discard-lines ( -- )

View File

@ -74,7 +74,7 @@ METHOD: satisfiable? { ⊥ } drop f ;
[ \ ¬ instance? ] partition [ x>> ] map intersect empty? ;
METHOD: satisfiable? { □ }
cnf [ (satisfiable?) ] contains? ;
cnf [ (satisfiable?) ] any? ;
GENERIC: (expr.) ( expr -- )

View File

@ -27,7 +27,7 @@ MEMO: ipad ( -- seq ) 64 HEX: 36 <array> ;
MEMO: opad ( -- seq ) 64 HEX: 5c <array> ;
: init-hmac ( K -- o i )
64 0 pad-right
64 0 pad-tail
[ opad seq-bitxor ] keep
ipad seq-bitxor ;

View File

@ -73,7 +73,7 @@ IN: easy-help
string-lines
1 tail
[ dup " " head? [ 4 tail ] [ ] if ] map
[ " " split1 [ " " first = ] trim-left 2array ] map
[ " " split1 [ " " first = ] trim-head 2array ] map
\ $values prefix
parsed

View File

@ -86,7 +86,7 @@ SYMBOL: visited
: flattenable? ( object -- ? )
{ [ word? ] [ primitive? not ] [
{ "inverse" "math-inverse" "pop-inverse" }
[ word-prop ] with contains? not
[ word-prop ] with any? not
] } 1&& ;
: flatten ( quot -- expanded )
@ -230,7 +230,7 @@ DEFER: _
: empty-inverse ( class -- quot )
deconstruct-pred
[ tuple>array rest [ ] contains? [ fail ] when ]
[ tuple>array rest [ ] any? [ fail ] when ]
compose ;
\ new 1 [ ?wrapped empty-inverse ] define-pop-inverse

4
extra/lint/lint.factor Normal file → Executable file
View File

@ -98,8 +98,8 @@ def-hash get-global [ drop empty? not ] assoc-filter
[
drop {
[ [ wrapper? ] deep-contains? ]
[ [ hashtable? ] deep-contains? ]
[ [ wrapper? ] deep-any? ]
[ [ hashtable? ] deep-any? ]
} 1|| not
] assoc-filter

View File

@ -32,9 +32,9 @@ IN: math.floating-point
: double. ( double -- )
double>bits
[ (double-sign) .b ]
[ (double-exponent-bits) >bin 11 CHAR: 0 pad-left bl print ]
[ (double-exponent-bits) >bin 11 CHAR: 0 pad-head bl print ]
[
(double-mantissa-bits) >bin 52 CHAR: 0 pad-left
(double-mantissa-bits) >bin 52 CHAR: 0 pad-head
11 [ bl ] times print
] tri ;

Some files were not shown because too many files have changed in this diff Show More