parent
2edd0fefc9
commit
f80085ff0a
|
@ -24,7 +24,7 @@ SYMBOL: bootstrap-time
|
|||
: load-components ( -- )
|
||||
"exclude" "include"
|
||||
[ get-global " " split [ empty? not ] subset ] bi@
|
||||
seq-diff
|
||||
diff
|
||||
[ "bootstrap." prepend require ] each ;
|
||||
|
||||
! : compile-remaining ( -- )
|
||||
|
|
|
@ -79,7 +79,7 @@ IN: dlists.tests
|
|||
[ dlist-push-all ] keep
|
||||
[ dlist-delete-all ] keep
|
||||
dlist>array
|
||||
] 2keep seq-diff assert-same-elements
|
||||
] 2keep diff assert-same-elements
|
||||
] unit-test
|
||||
|
||||
[ ] [
|
||||
|
|
|
@ -381,7 +381,7 @@ M: value (lazy-load)
|
|||
: (compute-free-vregs) ( used class -- vector )
|
||||
#! Find all vregs in 'class' which are not in 'used'.
|
||||
[ vregs length reverse ] keep
|
||||
[ <vreg> ] curry map seq-diff
|
||||
[ <vreg> ] curry map diff
|
||||
>vector ;
|
||||
|
||||
: compute-free-vregs ( -- )
|
||||
|
|
|
@ -288,7 +288,7 @@ M: no-word-error summary
|
|||
scan-word bootstrap-word scan-word create-method-in ;
|
||||
|
||||
: shadowed-slots ( superclass slots -- shadowed )
|
||||
>r all-slot-names r> seq-intersect ;
|
||||
>r all-slot-names r> intersect ;
|
||||
|
||||
: check-slot-shadowing ( class superclass slots -- )
|
||||
shadowed-slots [
|
||||
|
|
|
@ -65,7 +65,7 @@ ARTICLE: "sequences-add-remove" "Adding and removing sequence elements"
|
|||
{ $subsection suffix }
|
||||
"Removing elements:"
|
||||
{ $subsection remove }
|
||||
{ $subsection seq-diff } ;
|
||||
{ $subsection diff } ;
|
||||
|
||||
ARTICLE: "sequences-reshape" "Reshaping sequences"
|
||||
"A " { $emphasis "repetition" } " is a virtual sequence consisting of a single element repeated multiple times:"
|
||||
|
@ -660,7 +660,7 @@ HELP: prefix
|
|||
{ $example "USING: prettyprint sequences ;" "{ 1 2 3 } 0 prefix ." "{ 0 1 2 3 }" }
|
||||
} ;
|
||||
|
||||
HELP: seq-diff
|
||||
HELP: diff
|
||||
{ $values { "seq1" sequence } { "seq2" sequence } { "newseq" sequence } }
|
||||
{ $description "Outputs a sequence consisting of elements present in " { $snippet "seq2" } " but not " { $snippet "seq1" } ", comparing elements for equality." } ;
|
||||
|
||||
|
|
|
@ -241,7 +241,7 @@ unit-test
|
|||
[ ?{ f t } ] [ 0 2 ?{ f t f } subseq ] unit-test
|
||||
|
||||
[ V{ f f f } ] [ 3 V{ } new-sequence ] unit-test
|
||||
[ SBUF" \0\0\0" ] [ 3 SBUF" " new ] unit-test
|
||||
[ SBUF" \0\0\0" ] [ 3 SBUF" " new-sequence ] unit-test
|
||||
|
||||
[ 0 ] [ f length ] unit-test
|
||||
[ f first ] must-fail
|
||||
|
|
|
@ -444,7 +444,7 @@ PRIVATE>
|
|||
: memq? ( obj seq -- ? )
|
||||
[ eq? ] with contains? ;
|
||||
|
||||
: seq-intersect ( seq1 seq2 -- seq1/\seq2 )
|
||||
: intersect ( seq1 seq2 -- seq1/\seq2 )
|
||||
swap [ member? ] curry subset ;
|
||||
|
||||
: remove ( obj seq -- newseq )
|
||||
|
@ -512,7 +512,7 @@ M: slice equal? over slice? [ sequence= ] [ 2drop f ] if ;
|
|||
[ 0 swap copy ] keep
|
||||
] new-like ;
|
||||
|
||||
: seq-diff ( seq1 seq2 -- newseq )
|
||||
: diff ( seq1 seq2 -- newseq )
|
||||
swap [ member? not ] curry subset ;
|
||||
|
||||
: peek ( seq -- elt ) dup length 1- swap nth ;
|
||||
|
|
|
@ -69,7 +69,7 @@ INSTANCE: groups sequence
|
|||
: split ( seq separators -- pieces ) [ split, ] { } make ;
|
||||
|
||||
: string-lines ( str -- seq )
|
||||
dup "\r\n" seq-intersect empty? [
|
||||
dup "\r\n" intersect empty? [
|
||||
1array
|
||||
] [
|
||||
"\n" split [
|
||||
|
|
|
@ -23,7 +23,7 @@ IN: delegate
|
|||
|
||||
: forget-old-definitions ( protocol new-wordlist -- )
|
||||
>r users-and-words r>
|
||||
seq-diff forget-all-methods ;
|
||||
diff forget-all-methods ;
|
||||
|
||||
: define-protocol ( protocol wordlist -- )
|
||||
! 2dup forget-old-definitions
|
||||
|
|
|
@ -94,7 +94,7 @@ IN: http
|
|||
|
||||
: check-header-string ( str -- str )
|
||||
#! http://en.wikipedia.org/wiki/HTTP_Header_Injection
|
||||
dup "\r\n" seq-intersect empty?
|
||||
dup "\r\n" intersect empty?
|
||||
[ "Header injection attack" throw ] unless ;
|
||||
|
||||
: write-header ( assoc -- )
|
||||
|
|
|
@ -70,7 +70,7 @@ C: <validation-error> validation-error
|
|||
dup empty? [ "must remain blank" throw ] unless ;
|
||||
|
||||
: v-one-line ( str -- str )
|
||||
dup "\r\n" seq-intersect empty?
|
||||
dup "\r\n" intersect empty?
|
||||
[ "must be a single line" throw ] unless ;
|
||||
|
||||
: v-one-word ( str -- str )
|
||||
|
|
|
@ -140,7 +140,7 @@ M: object free-vars drop { } ;
|
|||
M: quotation free-vars { } [ add-if-free ] reduce ;
|
||||
|
||||
M: lambda free-vars
|
||||
dup vars>> swap body>> free-vars seq-diff ;
|
||||
dup vars>> swap body>> free-vars diff ;
|
||||
|
||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
! lambda-rewrite
|
||||
|
|
|
@ -15,7 +15,7 @@ IN: opengl.capabilities
|
|||
: has-gl-extensions? ( extensions -- ? )
|
||||
gl-extensions swap [ over member? ] all? nip ;
|
||||
: (make-gl-extensions-error) ( required-extensions -- )
|
||||
gl-extensions swap seq-diff
|
||||
gl-extensions swap diff
|
||||
"Required OpenGL extensions not supported:\n" %
|
||||
[ " " % % "\n" % ] each ;
|
||||
: require-gl-extensions ( extensions -- )
|
||||
|
|
|
@ -51,7 +51,7 @@ IN: project-euler.023
|
|||
PRIVATE>
|
||||
|
||||
: euler023 ( -- answer )
|
||||
20161 abundants-upto possible-sums source-023 seq-diff sum ;
|
||||
20161 abundants-upto possible-sums source-023 diff sum ;
|
||||
|
||||
! TODO: solution is still too slow, although it takes under 1 minute
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ IN: project-euler.035
|
|||
|
||||
: possible? ( seq -- ? )
|
||||
dup length 1 > [
|
||||
dup { 0 2 4 5 6 8 } swap seq-diff =
|
||||
dup { 0 2 4 5 6 8 } swap diff =
|
||||
] [
|
||||
drop t
|
||||
] if ;
|
||||
|
|
|
@ -79,7 +79,7 @@ PRIVATE>
|
|||
[ unclip 1 head prefix concat ] map [ all-unique? ] subset ;
|
||||
|
||||
: add-missing-digit ( seq -- seq )
|
||||
dup natural-sort 10 seq-diff first prefix ;
|
||||
dup natural-sort 10 diff first prefix ;
|
||||
|
||||
: interesting-pandigitals ( -- seq )
|
||||
17 candidates { 13 11 7 5 3 2 } [
|
||||
|
|
|
@ -35,7 +35,7 @@ IN: project-euler.079
|
|||
] { } make ;
|
||||
|
||||
: find-source ( seq -- elt )
|
||||
dup values swap keys [ prune ] bi@ seq-diff
|
||||
dup values swap keys [ prune ] bi@ diff
|
||||
dup empty? [ "Topological sort failed" throw ] [ first ] if ;
|
||||
|
||||
: remove-source ( seq elt -- seq )
|
||||
|
@ -52,7 +52,7 @@ PRIVATE>
|
|||
|
||||
: topological-sort ( seq -- seq )
|
||||
[ [ (topological-sort) ] { } make ] keep
|
||||
concat prune dupd seq-diff append ;
|
||||
concat prune dupd diff append ;
|
||||
|
||||
: euler079 ( -- answer )
|
||||
source-079 >edges topological-sort 10 digits>integer ;
|
||||
|
@ -60,7 +60,7 @@ PRIVATE>
|
|||
! [ euler079 ] 100 ave-time
|
||||
! 2 ms run / 0 ms GC ave time - 100 trials
|
||||
|
||||
! TODO: prune and seq-diff are relatively slow; topological sort could be
|
||||
! TODO: prune and diff are relatively slow; topological sort could be
|
||||
! cleaned up and generalized much better, but it works for this problem
|
||||
|
||||
MAIN: euler079
|
||||
|
|
|
@ -23,7 +23,7 @@ IN: qualified
|
|||
] curry map zip ;
|
||||
|
||||
: partial-vocab-ignoring ( words name -- assoc )
|
||||
[ vocab-words keys seq-diff ] keep partial-vocab ;
|
||||
[ vocab-words keys diff ] keep partial-vocab ;
|
||||
|
||||
: EXCLUDE:
|
||||
#! Syntax: EXCLUDE: vocab => words ... ;
|
||||
|
|
|
@ -32,7 +32,7 @@ LOG: log-smtp-connection NOTICE ( addrspec -- )
|
|||
|
||||
: validate-address ( string -- string' )
|
||||
#! Make sure we send funky stuff to the server by accident.
|
||||
dup "\r\n>" seq-intersect empty?
|
||||
dup "\r\n>" intersect empty?
|
||||
[ "Bad e-mail address: " prepend throw ] unless ;
|
||||
|
||||
: mail-from ( fromaddr -- )
|
||||
|
@ -90,7 +90,7 @@ LOG: smtp-response DEBUG
|
|||
: get-ok ( -- ) receive-response check-response ;
|
||||
|
||||
: validate-header ( string -- string' )
|
||||
dup "\r\n" seq-intersect empty?
|
||||
dup "\r\n" intersect empty?
|
||||
[ "Invalid header string: " prepend throw ] unless ;
|
||||
|
||||
: write-header ( key value -- )
|
||||
|
|
|
@ -104,7 +104,7 @@ IN: tools.deploy.shaker
|
|||
set-global ;
|
||||
|
||||
: strip-vocab-globals ( except names -- words )
|
||||
[ child-vocabs [ words ] map concat ] map concat seq-diff ;
|
||||
[ child-vocabs [ words ] map concat ] map concat diff ;
|
||||
|
||||
: stripped-globals ( -- seq )
|
||||
[
|
||||
|
|
|
@ -126,7 +126,7 @@ SYMBOL: modified-docs
|
|||
modified-sources get
|
||||
modified-docs get
|
||||
]
|
||||
[ modified-sources get modified-docs get append swap seq-diff ] bi
|
||||
[ modified-sources get modified-docs get append swap diff ] bi
|
||||
] with-scope ;
|
||||
|
||||
: do-refresh ( modified-sources modified-docs unchanged -- )
|
||||
|
|
|
@ -19,7 +19,7 @@ M: dimensions-not-equal summary drop "Dimensions do not match" ;
|
|||
[ remove-one ] curry bi@ ;
|
||||
|
||||
: symbolic-reduce ( seq seq -- seq seq )
|
||||
2dup seq-intersect dup empty?
|
||||
2dup intersect dup empty?
|
||||
[ drop ] [ first 2remove-one symbolic-reduce ] if ;
|
||||
|
||||
: <dimensioned> ( n top bot -- obj )
|
||||
|
|
|
@ -162,7 +162,7 @@ SYMBOL: ns-stack
|
|||
T{ name f "" "version" f }
|
||||
T{ name f "" "encoding" f }
|
||||
T{ name f "" "standalone" f }
|
||||
} swap seq-diff
|
||||
} swap diff
|
||||
dup empty? [ drop ] [ <extra-attrs> throw ] if ;
|
||||
|
||||
: good-version ( version -- version )
|
||||
|
|
|
@ -71,7 +71,7 @@ TAGS>
|
|||
] keep ;
|
||||
|
||||
: merge-rule-set-props ( props rule-set -- )
|
||||
[ rule-set-props union ] keep set-rule-set-props ;
|
||||
[ rule-set-props assoc-union ] keep set-rule-set-props ;
|
||||
|
||||
! Top-level entry points
|
||||
: parse-mode-tag ( tag -- rule-sets )
|
||||
|
|
Loading…
Reference in New Issue