Rename 2apply to bi@

db4
Slava Pestov 2008-03-29 20:36:58 -05:00
parent db7939d68c
commit c22af5c7a6
111 changed files with 196 additions and 199 deletions

View File

@ -39,7 +39,7 @@ M: alien equal?
2dup [ expired? ] either? [
[ expired? ] both?
] [
[ alien-address ] 2apply =
[ alien-address ] bi@ =
] if
] [
2drop f

View File

@ -115,7 +115,7 @@ M: assoc assoc-clone-like ( assoc exemplar -- newassoc )
swap [ swapd set-at ] curry assoc-each ;
: union ( assoc1 assoc2 -- union )
2dup [ assoc-size ] 2apply + pick new-assoc
2dup [ assoc-size ] bi@ + pick new-assoc
[ rot update ] keep [ swap update ] keep ;
: diff ( assoc1 assoc2 -- diff )

View File

@ -21,7 +21,7 @@ IN: bit-arrays.tests
{ t f t } { f t f }
] [
{ t f t } >bit-array dup clone dup [ not ] change-each
[ >array ] 2apply
[ >array ] bi@
] unit-test
[

View File

@ -23,7 +23,7 @@ SYMBOL: bootstrap-time
: load-components ( -- )
"exclude" "include"
[ get-global " " split [ empty? not ] subset ] 2apply
[ get-global " " split [ empty? not ] subset ] bi@
seq-diff
[ "bootstrap." prepend require ] each ;

View File

@ -67,7 +67,7 @@ C: <anonymous-complement> anonymous-complement
members>> [ class< ] with all? ;
: anonymous-complement< ( first second -- ? )
[ class>> ] 2apply swap class< ;
[ class>> ] bi@ swap class< ;
: (class<) ( first second -- -1/0/1 )
{

View File

@ -47,8 +47,8 @@ TUPLE: mixin-instance loc class mixin ;
M: mixin-instance equal?
{
{ [ over mixin-instance? not ] [ f ] }
{ [ 2dup [ mixin-instance-class ] 2apply = not ] [ f ] }
{ [ 2dup [ mixin-instance-mixin ] 2apply = not ] [ f ] }
{ [ 2dup [ mixin-instance-class ] bi@ = not ] [ f ] }
{ [ 2dup [ mixin-instance-mixin ] bi@ = not ] [ f ] }
{ [ t ] [ t ] }
} cond 2nip ;

View File

@ -10,7 +10,7 @@ IN: compiler.tests
[ 3 ] [ 5 2 [ [ - ] 2curry 9 swap call /i ] compile-call ] unit-test
[ 3 ] [ 5 2 [ [ - ] 2curry >r 9 r> call /i ] compile-call ] unit-test
[ -10 -20 ] [ 10 20 -1 [ [ * ] curry 2apply ] compile-call ] unit-test
[ -10 -20 ] [ 10 20 -1 [ [ * ] curry bi@ ] compile-call ] unit-test
[ [ 5 2 - ] ] [ 5 [ [ 2 - ] curry ] compile-call >quotation ] unit-test
[ [ 5 2 - ] ] [ [ 5 [ 2 - ] curry ] compile-call >quotation ] unit-test

View File

@ -72,13 +72,13 @@ unit-test
] unit-test
[ 12 13 ] [
-12 -13 [ [ 0 swap fixnum-fast ] 2apply ] compile-call
-12 -13 [ [ 0 swap fixnum-fast ] bi@ ] compile-call
] unit-test
[ -1 2 ] [ 1 2 [ >r 0 swap fixnum- r> ] compile-call ] unit-test
[ 12 13 ] [
-12 -13 [ [ 0 swap fixnum- ] 2apply ] compile-call
-12 -13 [ [ 0 swap fixnum- ] bi@ ] compile-call
] unit-test
[ 1 ] [

View File

@ -63,7 +63,7 @@ M: arm-backend load-indirect ( obj reg -- )
M: immediate load-literal
over v>operand small-enough? [
[ v>operand ] 2apply swap MOV
[ v>operand ] bi@ swap MOV
] [
v>operand load-indirect
] if ;
@ -322,10 +322,10 @@ M: arm-backend fp-shadows-int? ( -- ? ) f ;
! Alien intrinsics
M: arm-backend %unbox-byte-array ( dst src -- )
[ v>operand ] 2apply byte-array-offset ADD ;
[ v>operand ] bi@ byte-array-offset ADD ;
M: arm-backend %unbox-alien ( dst src -- )
[ v>operand ] 2apply alien-offset <+> LDR ;
[ v>operand ] bi@ alien-offset <+> LDR ;
M: arm-backend %unbox-f ( dst src -- )
drop v>operand 0 MOV ;

View File

@ -33,7 +33,7 @@ IN: cpu.ppc.allot
f fresh-object ;
M: ppc-backend %box-float ( dst src -- )
[ v>operand ] 2apply %allot-float 12 MR ;
[ v>operand ] bi@ %allot-float 12 MR ;
: %allot-bignum ( #digits -- )
#! 1 cell header, 1 cell length, 1 cell sign, + digits

View File

@ -71,7 +71,7 @@ M: ds-loc loc>operand ds-loc-n cells neg ds-reg swap ;
M: rs-loc loc>operand rs-loc-n cells neg rs-reg swap ;
M: immediate load-literal
[ v>operand ] 2apply LOAD ;
[ v>operand ] bi@ LOAD ;
M: ppc-backend load-indirect ( obj reg -- )
[ 0 swap LOAD32 rc-absolute-ppc-2/2 rel-literal ] keep
@ -138,7 +138,7 @@ M: ppc-backend %replace
>r v>operand r> loc>operand STW ;
M: ppc-backend %unbox-float ( dst src -- )
[ v>operand ] 2apply float-offset LFD ;
[ v>operand ] bi@ float-offset LFD ;
M: ppc-backend %inc-d ( n -- ) ds-reg dup rot cells ADDI ;
@ -291,10 +291,10 @@ M: ppc-backend %unbox-small-struct
! Alien intrinsics
M: ppc-backend %unbox-byte-array ( dst src -- )
[ v>operand ] 2apply byte-array-offset ADDI ;
[ v>operand ] bi@ byte-array-offset ADDI ;
M: ppc-backend %unbox-alien ( dst src -- )
[ v>operand ] 2apply alien-offset LWZ ;
[ v>operand ] bi@ alien-offset LWZ ;
M: ppc-backend %unbox-f ( dst src -- )
drop 0 swap v>operand LI ;

View File

@ -101,6 +101,6 @@ M: x86-backend %box-alien ( dst src -- )
] %allot
"end" get JMP
"f" resolve-label
f [ v>operand ] 2apply MOV
f [ v>operand ] bi@ MOV
"end" resolve-label
] with-scope ;

View File

@ -109,9 +109,9 @@ M: x86-backend %dispatch-label ( word -- )
0 cell, rc-absolute-cell rel-word ;
M: x86-backend %unbox-float ( dst src -- )
[ v>operand ] 2apply float-offset [+] MOVSD ;
[ v>operand ] bi@ float-offset [+] MOVSD ;
M: x86-backend %peek [ v>operand ] 2apply MOV ;
M: x86-backend %peek [ v>operand ] bi@ MOV ;
M: x86-backend %replace swap %peek ;
@ -162,10 +162,10 @@ M: x86-backend %return ( -- ) 0 %unwind ;
! Alien intrinsics
M: x86-backend %unbox-byte-array ( dst src -- )
[ v>operand ] 2apply byte-array-offset [+] LEA ;
[ v>operand ] bi@ byte-array-offset [+] LEA ;
M: x86-backend %unbox-alien ( dst src -- )
[ v>operand ] 2apply alien-offset [+] MOV ;
[ v>operand ] bi@ alien-offset [+] MOV ;
M: x86-backend %unbox-f ( dst src -- )
drop v>operand 0 MOV ;

View File

@ -82,7 +82,7 @@ ERROR: assert got expect ;
: depth ( -- n ) datastack length ;
: trim-datastacks ( seq1 seq2 -- seq1' seq2' )
2dup [ length ] 2apply min tuck tail >r tail r> ;
2dup [ length ] bi@ min tuck tail >r tail r> ;
ERROR: relative-underflow stack ;

View File

@ -63,7 +63,7 @@ IN: dlists.tests
[ 0 ] [ <dlist> 1 over push-front dup pop-front* dlist-length ] unit-test
: assert-same-elements
[ prune natural-sort ] 2apply assert= ;
[ prune natural-sort ] bi@ assert= ;
: dlist-push-all [ push-front ] curry each ;

View File

@ -18,8 +18,8 @@ TUPLE: effect in out terminated? ;
{ [ dup not ] [ t ] }
{ [ over effect-terminated? ] [ t ] }
{ [ dup effect-terminated? ] [ f ] }
{ [ 2dup [ effect-in length ] 2apply > ] [ f ] }
{ [ 2dup [ effect-height ] 2apply = not ] [ f ] }
{ [ 2dup [ effect-in length ] bi@ > ] [ f ] }
{ [ 2dup [ effect-height ] bi@ = not ] [ f ] }
{ [ t ] [ t ] }
} cond 2nip ;

View File

@ -79,7 +79,7 @@ M: ds-loc minimal-ds-loc* ds-loc-n min ;
M: ds-loc operand-class* ds-loc-class ;
M: ds-loc set-operand-class set-ds-loc-class ;
M: ds-loc live-loc?
over ds-loc? [ [ ds-loc-n ] 2apply = not ] [ 2drop t ] if ;
over ds-loc? [ [ ds-loc-n ] bi@ = not ] [ 2drop t ] if ;
! A retain stack location.
TUPLE: rs-loc n class ;
@ -89,7 +89,7 @@ TUPLE: rs-loc n class ;
M: rs-loc operand-class* rs-loc-class ;
M: rs-loc set-operand-class set-rs-loc-class ;
M: rs-loc live-loc?
over rs-loc? [ [ rs-loc-n ] 2apply = not ] [ 2drop t ] if ;
over rs-loc? [ [ rs-loc-n ] bi@ = not ] [ 2drop t ] if ;
UNION: loc ds-loc rs-loc ;
@ -206,7 +206,7 @@ INSTANCE: constant value
%move ;
: %move ( dst src -- )
2dup [ move-spec ] 2apply 2array {
2dup [ move-spec ] bi@ 2array {
{ { f f } [ %move-bug ] }
{ { f unboxed-c-ptr } [ %move-bug ] }
{ { f unboxed-byte-array } [ %move-bug ] }
@ -318,7 +318,7 @@ M: phantom-stack cut-phantom
: phantoms ( -- phantom phantom ) phantom-d get phantom-r get ;
: each-phantom ( quot -- ) phantoms rot 2apply ; inline
: each-phantom ( quot -- ) phantoms rot bi@ ; inline
: finalize-heights ( -- ) [ finalize-height ] each-phantom ;
@ -442,7 +442,7 @@ M: loc lazy-store
: fast-shuffle? ( live-locs -- ? )
#! Test if we have enough free registers to load all
#! shuffle inputs at once.
T{ int-regs } free-vregs [ length ] 2apply <= ;
T{ int-regs } free-vregs [ length ] bi@ <= ;
: finalize-locs ( -- )
#! Perform any deferred stack shuffling.
@ -488,7 +488,7 @@ M: loc lazy-store
: phantom&spec ( phantom spec -- phantom' spec' )
[ length f pad-left ] keep
[ <reversed> ] 2apply ; inline
[ <reversed> ] bi@ ; inline
: phantom&spec-agree? ( phantom spec quot -- ? )
>r phantom&spec r> 2all? ; inline
@ -520,7 +520,7 @@ M: loc lazy-store
swap lazy-load ;
: output-vregs ( -- seq seq )
+output+ +clobber+ [ get [ get ] map ] 2apply ;
+output+ +clobber+ [ get [ get ] map ] bi@ ;
: clash? ( seq -- ? )
phantoms append [

View File

@ -156,7 +156,7 @@ M: hashtable clone
M: hashtable equal?
over hashtable? [
2dup [ assoc-size ] 2apply number=
2dup [ assoc-size ] bi@ number=
[ assoc= ] [ 2drop f ] if
] [ 2drop f ] if ;

View File

@ -66,8 +66,8 @@ IN: heaps.tests
dup heap-data clone swap
] keep 3 /i [ 2dup >r delete-random r> heap-delete ] times
heap-data
[ [ entry-key ] map ] 2apply
[ natural-sort ] 2apply ;
[ [ entry-key ] map ] bi@
[ natural-sort ] bi@ ;
11 [
[ t ] swap [ 2^ delete-test sequence= ] curry unit-test

View File

@ -26,8 +26,8 @@ C: <literal-constraint> literal-constraint
M: literal-constraint equal?
over literal-constraint? [
2dup
[ literal-constraint-literal ] 2apply eql? >r
[ literal-constraint-value ] 2apply = r> and
[ literal-constraint-literal ] bi@ eql? >r
[ literal-constraint-value ] bi@ = r> and
] [
2drop f
] if ;

View File

@ -224,7 +224,7 @@ DEFER: do-crap*
MATH: xyz
M: fixnum xyz 2array ;
M: float xyz
[ 3 ] 2apply swapd >r 2array swap r> 2array swap ;
[ 3 ] bi@ swapd >r 2array swap r> 2array swap ;
[ [ xyz ] infer ] [ inference-error? ] must-fail-with

View File

@ -117,7 +117,7 @@ io.encodings.utf8 ;
[ ] [ "test-quux.txt" temp-file ascii [ [ yield "Hi" write ] "Test" spawn drop ] with-file-writer ] unit-test
[ ] [ "test-quux.txt" "quux-test.txt" [ temp-file ] 2apply move-file ] unit-test
[ ] [ "test-quux.txt" "quux-test.txt" [ temp-file ] bi@ move-file ] unit-test
[ t ] [ "quux-test.txt" temp-file exists? ] unit-test
[ ] [ "quux-test.txt" temp-file delete-file ] unit-test

View File

@ -60,8 +60,8 @@ $nl
{ $subsection keep }
{ $subsection 2keep }
{ $subsection 3keep }
{ $subsection 2apply }
"A pair of utility words built from " { $link 2apply } ":"
{ $subsection bi@ }
"A pair of utility words built from " { $link bi@ } ":"
{ $subsection both? }
{ $subsection either? }
"A looping combinator:"
@ -376,7 +376,7 @@ HELP: 3keep
{ $values { "quot" "a quotation with stack effect " { $snippet "( x y z -- )" } } { "x" object } { "y" object } { "z" object } }
{ $description "Call a quotation with three values on the stack, restoring the values when the quotation returns." } ;
HELP: 2apply
HELP: bi@
{ $values { "quot" "a quotation with stack effect " { $snippet "( obj -- )" } } { "x" object } { "y" object } }
{ $description "Applies the quotation to " { $snippet "x" } ", then to " { $snippet "y" } "." } ;

View File

@ -199,6 +199,3 @@ GENERIC: construct-boa ( ... class -- tuple )
: do-primitive ( number -- ) "Improper primitive call" throw ;
PRIVATE>
! Deprecated
: 2apply bi@ ; inline

View File

@ -169,7 +169,7 @@ IN: math.intervals.tests
: random-interval ( -- interval )
1000 random dup 2 1000 random + +
1 random zero? [ [ neg ] 2apply swap ] when
1 random zero? [ [ neg ] bi@ swap ] when
4 random {
{ 0 [ [a,b] ] }
{ 1 [ [a,b) ] }
@ -197,7 +197,7 @@ IN: math.intervals.tests
0 pick interval-contains? over first { / /i } member? and [
3drop t
] [
[ >r [ random-element ] 2apply ! 2dup . .
[ >r [ random-element ] bi@ ! 2dup . .
r> first execute ] 3keep
second execute interval-contains?
] if ;
@ -214,7 +214,7 @@ IN: math.intervals.tests
: comparison-test
random-interval random-interval random-comparison
[ >r [ random-element ] 2apply r> first execute ] 3keep
[ >r [ random-element ] bi@ r> first execute ] 3keep
second execute dup incomparable eq? [
2drop t
] [

View File

@ -67,7 +67,7 @@ C: <interval> interval
: (interval-op) ( p1 p2 quot -- p3 )
2over >r >r
>r [ first ] 2apply r> call
>r [ first ] bi@ r> call
r> r> [ second ] both? 2array ; inline
: interval-op ( i1 i2 quot -- i3 )
@ -108,7 +108,7 @@ C: <interval> interval
: interval-intersect ( i1 i2 -- i3 )
2dup and [
[ interval>points ] 2apply swapd
[ interval>points ] bi@ swapd
[ swap endpoint> ] most
>r [ swap endpoint< ] most r>
make-interval
@ -118,7 +118,7 @@ C: <interval> interval
: interval-union ( i1 i2 -- i3 )
2dup and [
[ interval>points 2array ] 2apply append points>interval
[ interval>points 2array ] bi@ append points>interval
] [
2drop f
] if ;
@ -131,17 +131,17 @@ C: <interval> interval
: interval-singleton? ( int -- ? )
interval>points
2dup [ second ] 2apply and
[ [ first ] 2apply = ]
2dup [ second ] bi@ and
[ [ first ] bi@ = ]
[ 2drop f ] if ;
: interval-length ( int -- n )
dup
[ interval>points [ first ] 2apply swap - ]
[ interval>points [ first ] bi@ swap - ]
[ drop 0 ] if ;
: interval-closure ( i1 -- i2 )
dup [ interval>points [ first ] 2apply [a,b] ] when ;
dup [ interval>points [ first ] bi@ [a,b] ] when ;
: interval-shift ( i1 i2 -- i3 )
#! Inaccurate; could be tighter
@ -163,7 +163,7 @@ C: <interval> interval
[ min ] interval-op interval-closure ;
: interval-interior ( i1 -- i2 )
interval>points [ first ] 2apply (a,b) ;
interval>points [ first ] bi@ (a,b) ;
: interval-division-op ( i1 i2 quot -- i3 )
>r 0 over interval-closure interval-contains?
@ -186,13 +186,13 @@ SYMBOL: incomparable
: left-endpoint-< ( i1 i2 -- ? )
[ swap interval-subset? ] 2keep
[ nip interval-singleton? ] 2keep
[ interval-from ] 2apply =
[ interval-from ] bi@ =
and and ;
: right-endpoint-< ( i1 i2 -- ? )
[ interval-subset? ] 2keep
[ drop interval-singleton? ] 2keep
[ interval-to ] 2apply =
[ interval-to ] bi@ =
and and ;
: (interval<) over interval-from over interval-from endpoint< ;

View File

@ -99,7 +99,7 @@ namespaces assocs kernel sequences math tools.test words ;
] unit-test
: regression-2 ( x y -- x.y )
[ p1 ] 2apply [
[ p1 ] bi@ [
[
rot
[ 2swap [ swapd * -rot p2 +@ ] 2keep ]

View File

@ -113,7 +113,7 @@ generic.standard system ;
: post-process ( class interval node -- classes intervals )
dupd won't-overflow?
[ >r dup { f integer } member? [ drop fixnum ] when r> ] when
[ dup [ 1array ] when ] 2apply ;
[ dup [ 1array ] when ] bi@ ;
: math-output-interval-1 ( node word -- interval )
dup [
@ -147,7 +147,7 @@ generic.standard system ;
] each
: intervals ( node -- i1 i2 )
node-in-d first2 [ value-interval* ] 2apply ;
node-in-d first2 [ value-interval* ] bi@ ;
: math-output-interval-2 ( node word -- interval )
dup [

View File

@ -475,7 +475,7 @@ SYMBOL: interactive-vocabs
: removed-definitions ( -- definitions )
new-definitions old-definitions
[ get first2 union ] 2apply diff ;
[ get first2 union ] bi@ diff ;
: smudged-usage ( -- usages referenced removed )
removed-definitions filter-moved keys [

View File

@ -114,7 +114,7 @@ SYMBOL: ->
: remove-breakpoints ( quot pos -- quot' )
over quotation? [
1+ cut [ (remove-breakpoints) ] 2apply
1+ cut [ (remove-breakpoints) ] bi@
[ -> ] swap 3append
] [
drop

View File

@ -12,7 +12,7 @@ M: curry call dup 3 slot swap 4 slot call ;
M: compose call dup 3 slot swap 4 slot slip call ;
M: wrapper equal?
over wrapper? [ [ wrapped ] 2apply = ] [ 2drop f ] if ;
over wrapper? [ [ wrapped ] bi@ = ] [ 2drop f ] if ;
UNION: callable quotation curry compose ;

View File

@ -169,13 +169,13 @@ unit-test
[ f ] [ { "a" "b" "c" } { "a" "b" "c" } mismatch ] unit-test
[ V{ } V{ } ] [ { "a" "b" } { "a" "b" } drop-prefix [ >vector ] 2apply ] unit-test
[ V{ } V{ } ] [ { "a" "b" } { "a" "b" } drop-prefix [ >vector ] bi@ ] unit-test
[ V{ "C" } V{ "c" } ] [ { "a" "b" "C" } { "a" "b" "c" } drop-prefix [ >vector ] 2apply ] unit-test
[ V{ "C" } V{ "c" } ] [ { "a" "b" "C" } { "a" "b" "c" } drop-prefix [ >vector ] bi@ ] unit-test
[ -1 1 "abc" <slice> ] must-fail
[ V{ "a" "b" } V{ } ] [ { "X" "a" "b" } { "X" } drop-prefix [ >vector ] 2apply ] unit-test
[ V{ "a" "b" } V{ } ] [ { "X" "a" "b" } { "X" } drop-prefix [ >vector ] bi@ ] unit-test
[ -1 ] [ "ab" "abc" <=> ] unit-test
[ 1 ] [ "abc" "ab" <=> ] unit-test

View File

@ -300,9 +300,9 @@ M: immutable-sequence clone-like like ;
: change-nth ( i seq quot -- )
[ >r nth r> call ] 3keep drop set-nth ; inline
: min-length ( seq1 seq2 -- n ) [ length ] 2apply min ; inline
: min-length ( seq1 seq2 -- n ) [ length ] bi@ min ; inline
: max-length ( seq1 seq2 -- n ) [ length ] 2apply max ; inline
: max-length ( seq1 seq2 -- n ) [ length ] bi@ max ; inline
<PRIVATE
@ -369,7 +369,7 @@ PRIVATE>
(2each) each-integer ; inline
: 2reverse-each ( seq1 seq2 quot -- )
>r [ <reversed> ] 2apply r> 2each ; inline
>r [ <reversed> ] bi@ r> 2each ; inline
: 2reduce ( seq1 seq2 identity quot -- result )
>r -rot r> 2each ; inline
@ -460,7 +460,7 @@ M: sequence <=>
[ -rot 2nth-unsafe <=> ] [ [ length ] compare ] if* ;
: sequence= ( seq1 seq2 -- ? )
2dup [ length ] 2apply number=
2dup [ length ] bi@ number=
[ mismatch not ] [ 2drop f ] if ; inline
: move ( to from seq -- )
@ -620,12 +620,12 @@ M: sequence <=>
[ drop nip ]
[ 2drop first ]
[ >r drop first2 r> call ]
[ >r drop first3 r> 2apply ]
[ >r drop first3 r> bi@ ]
} dispatch
] [
drop
>r >r halves r> r>
[ [ binary-reduce ] 2curry 2apply ] keep
[ [ binary-reduce ] 2curry bi@ ] keep
call
] if ; inline

View File

@ -32,7 +32,7 @@ DEFER: sort
] if ; inline
: merge ( sorted1 sorted2 quot -- result )
>r [ [ <iterator> ] 2apply ] 2keep r>
>r [ [ <iterator> ] bi@ ] 2keep r>
rot length rot length + <vector>
[ (merge) ] keep underlying ; inline

View File

@ -56,7 +56,7 @@ INSTANCE: groups sequence
] if ;
: last-split1 ( seq subseq -- before after )
[ <reversed> ] 2apply split1 [ reverse ] 2apply
[ <reversed> ] bi@ split1 [ reverse ] bi@
dup [ swap ] when ;
: (split) ( separators n seq -- )

View File

@ -77,7 +77,7 @@ IN: vectors.tests
[ f ] [
V{ 1 2 3 4 } dup clone
[ underlying ] 2apply eq?
[ underlying ] bi@ eq?
] unit-test
[ 0 ] [

View File

@ -94,7 +94,7 @@ TUPLE: vocab-link name ;
M: vocab-link equal?
over vocab-link?
[ [ vocab-link-name ] 2apply = ] [ 2drop f ] if ;
[ [ vocab-link-name ] bi@ = ] [ 2drop f ] if ;
M: vocab-link hashcode*
vocab-link-name hashcode* ;

View File

@ -133,7 +133,7 @@ DEFER: create ( level c r -- scene )
pick 1 = [ <sphere> nip ] [ create-group ] if ;
: ss-point ( dx dy -- point )
[ oversampling /f ] 2apply 0.0 3float-array ;
[ oversampling /f ] bi@ 0.0 3float-array ;
: ss-grid ( -- ss-grid )
oversampling [ oversampling [ ss-point ] with map ] map ;
@ -150,7 +150,7 @@ DEFER: create ( level c r -- scene )
: pixel-grid ( -- grid )
size reverse [
size [
[ size 0.5 * - ] 2apply swap size
[ size 0.5 * - ] bi@ swap size
3float-array
] with map
] map ;

View File

@ -5,7 +5,7 @@ io.files kernel ;
[ "c071aa7e007a9770b2fb4304f55a17e5" ] [
"extra/benchmark/reverse-complement/reverse-complement-test-in.txt"
"extra/benchmark/reverse-complement/reverse-complement-test-out.txt"
[ resource-path ] 2apply
[ resource-path ] bi@
reverse-complement
"extra/benchmark/reverse-complement/reverse-complement-test-out.txt"

View File

@ -7,7 +7,7 @@ IN: benchmark.spectral-norm
: fast-truncate >fixnum >float ; inline
: eval-A ( i j -- n )
[ >float ] 2apply
[ >float ] bi@
dupd + dup 1+ * 2 /f fast-truncate + 1+
recip ; inline

View File

@ -63,7 +63,7 @@ M: check< summary drop "Number exceeds upper bound" ;
[ range>accessor ] map ;
: clear-range ( range -- num )
first2 dupd + [ 2^ 1- ] 2apply bitnot bitor ;
first2 dupd + [ 2^ 1- ] bi@ bitnot bitor ;
: range>setter ( range -- quot )
[

View File

@ -80,7 +80,7 @@ VAR: separation-radius
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
: relative-position ( self other -- v ) swap [ boid-pos ] 2apply v- ;
: relative-position ( self other -- v ) swap [ boid-pos ] bi@ v- ;
: relative-angle ( self other -- angle )
over boid-vel -rot relative-position angle-between ;

View File

@ -19,11 +19,11 @@ IN: builder.benchmark
2array ;
: compare-tables ( old new -- table )
[ passing-benchmarks ] 2apply
[ passing-benchmarks ] bi@
[ benchmark-difference ] with map ;
: benchmark-deltas ( -- table )
"../benchmarks" "benchmarks" [ eval-file ] 2apply
"../benchmarks" "benchmarks" [ eval-file ] bi@
compare-tables
sort-values ;

View File

@ -88,7 +88,7 @@ USING: bootstrap.image bootstrap.image.download io.streams.null ;
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
: longer? ( seq seq -- ? ) [ length ] 2apply > ;
: longer? ( seq seq -- ? ) [ length ] bi@ > ;
: maybe-tail* ( seq n -- seq )
2dup longer?

View File

@ -185,7 +185,7 @@ M: number +second ( timestamp n -- timestamp )
[ month>> +month ] keep
[ year>> +year ] keep ; inline
: +slots [ 2apply + ] curry 2keep ; inline
: +slots [ bi@ + ] curry 2keep ; inline
PRIVATE>
@ -244,9 +244,9 @@ M: timestamp <=> ( ts1 ts2 -- n )
[ >gmt tuple-slots ] compare ;
: (time-) ( timestamp timestamp -- n )
[ >gmt ] 2apply
[ [ >date< julian-day-number ] 2apply - 86400 * ] 2keep
[ >time< >r >r 3600 * r> 60 * r> + + ] 2apply - + ;
[ >gmt ] bi@
[ [ >date< julian-day-number ] bi@ - 86400 * ] 2keep
[ >time< >r >r 3600 * r> 60 * r> + + ] bi@ - + ;
M: timestamp time-
#! Exact calendar-time difference

View File

@ -182,7 +182,7 @@ M: timestamp year. ( timestamp -- )
[
[ month>> month-abbreviations nth write ] keep bl
[ day>> number>string 2 32 pad-left write ] keep bl
dup now [ year>> ] 2apply = [
dup now [ year>> ] bi@ = [
[ hour>> write-00 ] keep ":" write
minute>> write-00
] [

View File

@ -26,7 +26,7 @@ IN: cocoa.dialogs
[ -> filenames CF>string-array ] [ drop f ] if ;
: split-path ( path -- dir file )
"/" last-split1 [ <NSString> ] 2apply ;
"/" last-split1 [ <NSString> ] bi@ ;
: save-panel ( path -- paths )
<NSSavePanel> dup

View File

@ -24,7 +24,7 @@ C: <rsa> rsa
: modulus-phi ( numbits -- n phi )
#! Loop until phi is not divisible by the public key.
dup rsa-primes [ * ] 2keep
[ 1- ] 2apply *
[ 1- ] bi@ *
dup public-key gcd nip 1 = [
rot drop
] [

View File

@ -124,5 +124,5 @@ SYMBOLS: h0 h1 h2 h3 h4 A B C D E w K ;
: byte-array>sha1-interleave ( string -- seq )
[ zero? ] left-trim
dup length odd? [ 1 tail ] when
seq>2seq [ byte-array>sha1 ] 2apply
seq>2seq [ byte-array>sha1 ] bi@
swap 2seq>seq ;

View File

@ -12,7 +12,7 @@ IN: documents
: =line ( n loc -- newloc ) second 2array ;
: lines-equal? ( loc1 loc2 -- ? ) [ first ] 2apply number= ;
: lines-equal? ( loc1 loc2 -- ? ) [ first ] bi@ number= ;
TUPLE: document locs ;
@ -46,7 +46,7 @@ TUPLE: document locs ;
2over = [
3drop
] [
>r [ first ] 2apply 1+ dup <slice> r> each
>r [ first ] bi@ 1+ dup <slice> r> each
] if ; inline
: start/end-on-line ( from to line# -- n1 n2 )
@ -85,7 +85,7 @@ TUPLE: document locs ;
: (set-doc-range) ( newlines from to lines -- )
[ prepare-insert ] 3keep
>r [ first ] 2apply 1+ r>
>r [ first ] bi@ 1+ r>
replace-slice ;
: set-doc-range ( string from to document -- )

View File

@ -91,7 +91,7 @@ C: <faq> faq
: faq-sections, ( question-lists -- )
unclip question-list-seq length 1+ dupd
[ question-list-seq length + ] accumulate nip
0 -rot [ pick question-list>html [ , nl, ] 2apply 1+ ] 2each drop ;
0 -rot [ pick question-list>html [ , nl, ] bi@ 1+ ] 2each drop ;
: faq>html ( faq -- div )
"div" [

View File

@ -69,7 +69,7 @@ $nl
{ { $link curry } { $snippet ": curry '[ , @ ] ;" } }
{ { $link with } { $snippet ": with swapd '[ , _ @ ] ;" } }
{ { $link compose } { $snippet ": compose '[ @ @ ] ;" } }
{ { $link 2apply } { $snippet ": 2apply tuck '[ , @ , @ ] call ;" } }
{ { $link bi@ } { $snippet ": bi@ tuck '[ , @ , @ ] call ;" } }
} ;
ARTICLE: "fry.philosophy" "Fried quotation philosophy"

View File

@ -59,7 +59,7 @@ IN: help.lint
: check-see-also ( word element -- )
nip \ $see-also swap elements [
1 tail dup prune [ length ] 2apply assert=
1 tail dup prune [ length ] bi@ assert=
] each ;
: vocab-exists? ( name -- ? )

View File

@ -106,7 +106,7 @@ IN: http
: query>assoc ( query -- assoc )
dup [
"&" split [
"=" split1 [ dup [ url-decode ] when ] 2apply
"=" split1 [ dup [ url-decode ] when ] bi@
] H{ } map>assoc
] when ;

View File

@ -51,14 +51,14 @@ SYMBOL: open-arrays
: binary-op ( quot -- ? )
>r get-cba r>
swap >r >r [ reg-val ] 2apply swap r> call r>
swap >r >r [ reg-val ] bi@ swap r> call r>
set-reg f ; inline
: op1 ( opcode -- ? )
[ swap arr-val ] binary-op ;
: op2 ( opcode -- ? )
get-cba >r [ reg-val ] 2apply r> reg-val set-arr f ;
get-cba >r [ reg-val ] bi@ r> reg-val set-arr f ;
: op3 ( opcode -- ? )
[ + >32bit ] binary-op ;

View File

@ -151,10 +151,10 @@ MACRO: undo ( quot -- ) [undo] ;
\ - [ + ] [ - ] define-math-inverse
\ * [ / ] [ / ] define-math-inverse
\ / [ * ] [ / ] define-math-inverse
\ ^ [ recip ^ ] [ [ log ] 2apply / ] define-math-inverse
\ ^ [ recip ^ ] [ [ log ] bi@ / ] define-math-inverse
\ ? 2 [
[ assert-literal ] 2apply
[ assert-literal ] bi@
[ swap >r over = r> swap [ 2drop f ] [ = [ t ] [ fail ] if ] if ]
2curry
] define-pop-inverse

View File

@ -78,7 +78,7 @@ M: utf16le decode-char
swap BIN: 11111111 bitand ;
: stream-write2 ( stream char1 char2 -- )
rot [ stream-write1 ] curry 2apply ;
rot [ stream-write1 ] curry bi@ ;
: char>utf16be ( stream char -- )
dup HEX: FFFF > [

View File

@ -161,5 +161,5 @@ TUPLE: datagram-port addr packet packet-addr ;
: check-datagram-send ( packet addrspec port -- )
dup check-datagram-port
datagram-port-addr [ class ] 2apply assert=
datagram-port-addr [ class ] bi@ assert=
class byte-array assert= ;

View File

@ -64,8 +64,8 @@ M: inet6 inet-ntop ( data addrspec -- str )
M: inet6 inet-pton ( str addrspec -- data )
drop "::" split1
[ [ ":" split [ hex> dup 0 ? ] map ] [ f ] if* ] 2apply
2dup [ length ] 2apply + 8 swap - 0 <array> swap 3append
[ [ ":" split [ hex> dup 0 ? ] map ] [ f ] if* ] bi@
2dup [ length ] bi@ + 8 swap - 0 <array> swap 3append
[ 2 >be ] map concat >byte-array ;
M: inet6 address-size drop 16 ;

View File

@ -49,7 +49,7 @@ M: unix-io touch-file ( path -- )
close ;
M: unix-io move-file ( from to -- )
[ normalize-pathname ] 2apply rename io-error ;
[ normalize-pathname ] bi@ rename io-error ;
M: unix-io delete-file ( path -- )
normalize-pathname unlink io-error ;
@ -69,7 +69,7 @@ M: unix-io delete-directory ( path -- )
] with-disposal ;
M: unix-io copy-file ( from to -- )
[ normalize-pathname ] 2apply
[ normalize-pathname ] bi@
[ (copy-file) ]
[ swap file-info file-info-permissions chmod io-error ]
2bi ;

View File

@ -46,5 +46,5 @@ M: windows-ce-io (init-stdio) ( -- )
1 _getstdfilex _fileno
2 _getstdfilex _fileno
] if [ f <win32-file> ] 3apply
rot <reader> -rot [ <writer> ] 2apply
rot <reader> -rot [ <writer> ] bi@
] with-variable ;

View File

@ -135,14 +135,14 @@ M: windows-io (file-appender) ( path -- stream )
open-append <win32-file> <writer> ;
M: windows-io move-file ( from to -- )
[ normalize-pathname ] 2apply MoveFile win32-error=0/f ;
[ normalize-pathname ] bi@ MoveFile win32-error=0/f ;
M: windows-io delete-file ( path -- )
normalize-pathname DeleteFile win32-error=0/f ;
M: windows-io copy-file ( from to -- )
dup parent-directory make-directories
[ normalize-pathname ] 2apply 0 CopyFile win32-error=0/f ;
[ normalize-pathname ] bi@ 0 CopyFile win32-error=0/f ;
M: windows-io make-directory ( path -- )
normalize-pathname

View File

@ -72,7 +72,7 @@ TUPLE: segment number color radius ;
: sub-tunnel ( from to sements -- segments )
#! return segments between from and to, after clamping from and to to
#! valid values
[ sequence-index-range [ clamp-to-range ] curry 2apply ] keep <slice> ;
[ sequence-index-range [ clamp-to-range ] curry bi@ ] keep <slice> ;
: nearer-segment ( segment segment oint -- segment )
#! return whichever of the two segments is nearer to the oint

View File

@ -57,7 +57,7 @@ SYMBOL: terms
terms get [ [ swap +@ ] assoc-each ] bind ;
: alt+ ( x y -- x+y )
[ >alt ] 2apply [ (alt+) (alt+) ] with-terms ;
[ >alt ] bi@ [ (alt+) (alt+) ] with-terms ;
! Multiplication
: alt*n ( vec n -- vec )
@ -79,7 +79,7 @@ SYMBOL: terms
] curry each ;
: duplicates? ( seq -- ? )
dup prune [ length ] 2apply > ;
dup prune [ length ] bi@ > ;
: (wedge) ( n basis1 basis2 -- n basis )
append dup duplicates? [
@ -90,7 +90,7 @@ SYMBOL: terms
] if ;
: wedge ( x y -- x.y )
[ >alt ] 2apply [
[ >alt ] bi@ [
swap [
[
2swap [
@ -200,7 +200,7 @@ DEFER: (d)
] with map ;
: bigraded-betti ( u-generators z-generators -- seq )
[ basis graded ] 2apply tensor bigraded-ker/im-d
[ basis graded ] bi@ tensor bigraded-ker/im-d
[ [ [ first ] map ] map ] keep
[ [ second ] map 2 head* { 0 0 } prepend ] map
1 tail dup first length 0 <array> add
@ -278,7 +278,7 @@ DEFER: (d)
] with map ;
: bigraded-laplacian ( u-generators z-generators quot -- seq )
>r [ basis graded ] 2apply tensor bigraded-triples r>
>r [ basis graded ] bi@ tensor bigraded-triples r>
[ [ first3 ] swap compose map ] curry map ; inline
: bigraded-laplacian-betti ( u-generators z-generators -- seq )

View File

@ -52,7 +52,7 @@ M: cons nil? ( cons -- bool )
TUPLE: lazy-cons car cdr ;
: lazy-cons ( car cdr -- promise )
[ promise ] 2apply \ lazy-cons construct-boa
[ promise ] bi@ \ lazy-cons construct-boa
T{ promise f f t f } clone
[ set-promise-value ] keep ;

View File

@ -17,7 +17,7 @@ SYMBOL: d
SYMBOL: costs
: init-d ( str1 str2 -- )
[ length 1+ ] 2apply 2dup <matrix> d set
[ length 1+ ] bi@ 2dup <matrix> d set
[ 0 over ->d ] each
[ dup 0 ->d ] each ; inline
@ -39,7 +39,7 @@ SYMBOL: costs
[
2dup init-d
2dup compute-costs
[ length ] 2apply [
[ length ] bi@ [
[ levenshtein-step ] curry each
] with each
levenshtein-result

View File

@ -71,7 +71,7 @@ def-hash get-global [
! Remove set-alien-cell, etc.
[
drop [ accessor-words swap seq-diff ] keep [ length ] 2apply =
drop [ accessor-words swap seq-diff ] keep [ length ] bi@ =
] assoc-subset
! Remove trivial defs
@ -148,7 +148,7 @@ GENERIC: run-lint ( obj -- obj )
: filter-symbols ( alist -- alist )
[
nip first dup def-hash get at
[ first ] 2apply literalize = not
[ first ] bi@ literalize = not
] assoc-subset ;
M: sequence run-lint ( seq -- seq )

View File

@ -32,10 +32,10 @@ SYMBOL: _
{ [ 2dup = ] [ 2drop t ] }
{ [ 2dup [ _ eq? ] either? ] [ 2drop t ] }
{ [ 2dup [ sequence? ] both? ] [
2dup [ length ] 2apply =
2dup [ length ] bi@ =
[ [ (match) ] 2all? ] [ 2drop f ] if ] }
{ [ 2dup [ tuple? ] both? ]
[ [ tuple>array ] 2apply [ (match) ] 2all? ] }
[ [ tuple>array ] bi@ [ (match) ] 2all? ] }
{ [ t ] [ 2drop f ] }
} cond ;

View File

@ -8,11 +8,11 @@ math.functions.private sequences parser ;
M: real real-part ;
M: real imaginary-part drop 0 ;
M: complex absq >rect [ sq ] 2apply + ;
M: complex absq >rect [ sq ] bi@ + ;
: 2>rect ( x y -- xr yr xi yi )
[ [ real-part ] 2apply ] 2keep
[ imaginary-part ] 2apply ; inline
[ [ real-part ] bi@ ] 2keep
[ imaginary-part ] bi@ ; inline
M: complex number=
2>rect number= [ number= ] [ 2drop f ] if ;

View File

@ -101,7 +101,7 @@ M: real absq sq ;
>r - abs r> < ;
: ~rel ( x y epsilon -- ? )
>r [ - abs ] 2keep [ abs ] 2apply + r> * < ;
>r [ - abs ] 2keep [ abs ] bi@ + r> * < ;
: ~ ( x y epsilon -- ? )
{
@ -124,7 +124,7 @@ M: real absq sq ;
: arg ( z -- arg ) >float-rect swap fatan2 ; inline
: >polar ( z -- abs arg )
>float-rect [ [ sq ] 2apply + fsqrt ] 2keep swap fatan2 ;
>float-rect [ [ sq ] bi@ + fsqrt ] 2keep swap fatan2 ;
inline
: cis ( arg -- z ) dup fcos swap fsin rect> ; inline

View File

@ -13,10 +13,10 @@ IN: math.polynomials
<PRIVATE
: 2pad-left ( p p n -- p p ) 0 [ pad-left swap ] 2keep pad-left swap ;
: 2pad-right ( p p n -- p p ) 0 [ pad-right swap ] 2keep pad-right swap ;
: pextend ( p p -- p p ) 2dup [ length ] 2apply max 2pad-right ;
: pextend-left ( p p -- p p ) 2dup [ length ] 2apply max 2pad-left ;
: pextend ( p p -- p p ) 2dup [ length ] bi@ max 2pad-right ;
: pextend-left ( p p -- p p ) 2dup [ length ] bi@ max 2pad-left ;
: unempty ( seq -- seq ) dup empty? [ drop { 0 } ] when ;
: 2unempty ( seq seq -- seq seq ) [ unempty ] 2apply ;
: 2unempty ( seq seq -- seq seq ) [ unempty ] bi@ ;
PRIVATE>
: p= ( p p -- ? ) pextend = ;
@ -24,7 +24,7 @@ PRIVATE>
: ptrim ( p -- p )
dup singleton? [ [ zero? ] right-trim ] unless ;
: 2ptrim ( p p -- p p ) [ ptrim ] 2apply ;
: 2ptrim ( p p -- p p ) [ ptrim ] bi@ ;
: p+ ( p p -- p ) pextend v+ ;
: p- ( p p -- p ) pextend v- ;
: n*p ( n p -- n*p ) n*v ;
@ -32,7 +32,7 @@ PRIVATE>
! convolution
: pextend-conv ( p p -- p p )
#! extend to: p_m + p_n - 1
2dup [ length ] 2apply + 1- 2pad-right [ >vector ] 2apply ;
2dup [ length ] bi@ + 1- 2pad-right [ >vector ] bi@ ;
: p* ( p p -- p )
#! Multiply two polynomials.
@ -46,13 +46,13 @@ PRIVATE>
: p/mod-setup ( p p -- p p n )
2ptrim
2dup [ length ] 2apply -
2dup [ length ] bi@ -
dup 1 < [ drop 1 ] when
[ over length + 0 pad-left pextend ] keep 1+ ;
: /-last ( seq seq -- a )
#! divide the last two numbers in the sequences
[ peek ] 2apply / ;
[ peek ] bi@ / ;
: (p/mod)
2dup /-last
@ -74,7 +74,7 @@ PRIVATE>
] if ;
: pgcd ( p p -- p q )
swap V{ 0 } clone V{ 1 } clone 2swap (pgcd) [ >array ] 2apply ;
swap V{ 0 } clone V{ 1 } clone 2swap (pgcd) [ >array ] bi@ ;
: pdiff ( p -- p' )
#! Polynomial derivative.

View File

@ -14,7 +14,7 @@ IN: math.quaternions
: ** conjugate * ; inline
: 2q ( u v -- u' u'' v' v'' ) [ first2 ] 2apply ; inline
: 2q ( u v -- u' u'' v' v'' ) [ first2 ] bi@ ; inline
: q*a ( u v -- a ) 2q swapd ** >r * r> - ; inline

View File

@ -7,7 +7,7 @@ USING: kernel kernel.private math math.functions math.private ;
dup numerator swap denominator ; inline
: 2>fraction ( a/b c/d -- a c b d )
[ >fraction ] 2apply swapd ; inline
[ >fraction ] bi@ swapd ; inline
<PRIVATE
@ -26,7 +26,7 @@ M: integer /
dup zero? [
"Division by zero" throw
] [
dup 0 < [ [ neg ] 2apply ] when
dup 0 < [ [ neg ] bi@ ] when
2dup gcd nip tuck /i >r /i r> fraction>
] if ;

View File

@ -46,13 +46,13 @@ IN: math.statistics
: ((r)) ( mean(x) mean(y) {x} {y} -- (r) )
! finds sigma((xi-mean(x))(yi-mean(y))
0 [ [ >r pick r> swap - ] 2apply * + ] 2reduce 2nip ;
0 [ [ >r pick r> swap - ] bi@ * + ] 2reduce 2nip ;
: (r) ( mean(x) mean(y) {x} {y} sx sy -- r )
* recip >r [ ((r)) ] keep length 1- / r> * ;
: [r] ( {{x,y}...} -- mean(x) mean(y) {x} {y} sx sy )
first2 [ [ [ mean ] 2apply ] 2keep ] 2keep [ std ] 2apply ;
first2 [ [ [ mean ] bi@ ] 2keep ] 2keep [ std ] bi@ ;
: r ( {{x,y}...} -- r )
[r] (r) ;

View File

@ -22,7 +22,7 @@ SYMBOL: visited
: random-neighbour ( cell -- newcell ) choices random ;
: vertex ( pair -- )
first2 [ 0.5 + line-width * ] 2apply glVertex2d ;
first2 [ 0.5 + line-width * ] bi@ glVertex2d ;
: (draw-maze) ( cell -- )
dup vertex

View File

@ -23,9 +23,9 @@ TUPLE: not-a-decimal ;
: parse-decimal ( str -- ratio )
"." split1
>r dup "-" head? [ drop t "0" ] [ f swap ] if r>
[ dup empty? [ drop "0" ] when ] 2apply
[ dup empty? [ drop "0" ] when ] bi@
dup length
>r [ string>number dup [ not-a-decimal ] unless ] 2apply r>
>r [ string>number dup [ not-a-decimal ] unless ] bi@ r>
10 swap ^ / + swap [ neg ] when ;
: DECIMAL:

View File

@ -113,7 +113,7 @@ TUPLE: no-method arguments generic ;
] curry assoc-map ;
: sorted-methods ( alist -- alist' )
[ [ first ] 2apply classes< ] topological-sort ;
[ [ first ] bi@ classes< ] topological-sort ;
: niceify-method [ dup \ f eq? [ drop f ] when ] map ;

View File

@ -38,7 +38,7 @@ M: demo-gadget pref-dim* ( gadget -- dim )
: demo-gadget-frustum ( -- -x x -y y near far )
FOV-RATIO NEAR-PLANE FOV / v*n
first2 [ -+ ] 2apply NEAR-PLANE FAR-PLANE ;
first2 [ -+ ] bi@ NEAR-PLANE FAR-PLANE ;
: demo-gadget-set-matrices ( gadget -- )
GL_PROJECTION glMatrixMode

View File

@ -8,9 +8,9 @@ math.parser opengl.gl opengl.glu combinators arrays sequences
splitting words byte-arrays assocs combinators.lib ;
IN: opengl
: coordinates [ first2 ] 2apply ;
: coordinates [ first2 ] bi@ ;
: fix-coordinates [ first2 [ >fixnum ] 2apply ] 2apply ;
: fix-coordinates [ first2 [ >fixnum ] bi@ ] bi@ ;
: gl-color ( color -- ) first4 glColor4d ; inline
@ -85,7 +85,7 @@ MACRO: all-enabled-client-state ( seq quot -- )
: unit-circle dup [ sin ] map swap [ cos ] map ;
: adjust-points [ [ 1 + 0.5 * ] map ] 2apply ;
: adjust-points [ [ 1 + 0.5 * ] map ] bi@ ;
: scale-points 2array flip [ v* ] with map [ v+ ] with map ;

View File

@ -35,7 +35,7 @@ C: <parse-result> parse-result
] if ;
: string= ( str1 str2 ignore-case -- ? )
[ [ >upper ] 2apply ] when sequence= ;
[ [ >upper ] bi@ ] when sequence= ;
: string-head? ( str head ignore-case -- ? )
2over shorter? [
@ -327,7 +327,7 @@ LAZY: <(+)> ( parser -- parser )
nonempty-list-of { } succeed <|> ;
LAZY: surrounded-by ( parser start end -- parser' )
[ token ] 2apply swapd pack ;
[ token ] bi@ swapd pack ;
: exactly-n ( parser n -- parser' )
swap <repetition> <and-parser> [ flatten ] <@ ;

View File

@ -70,7 +70,7 @@ MEMO: pack ( begin body end -- parser )
>r >r hide r> r> hide 3seq [ first ] action ;
: surrounded-by ( parser begin end -- parser' )
[ token ] 2apply swapd pack ;
[ token ] bi@ swapd pack ;
: 'digit' ( -- parser )
[ digit? ] satisfy [ digit> ] action ;

View File

@ -11,7 +11,7 @@ USE: prettyprint
TUPLE: parse-result remaining ast ;
TUPLE: parser id compiled ;
M: parser equal? [ id>> ] 2apply = ;
M: parser equal? [ id>> ] bi@ = ;
C: <parser> parser
SYMBOL: ignore

View File

@ -31,7 +31,7 @@ IN: project-euler.009
: abc ( p q -- triplet )
[
2dup * , ! a = p * q
[ sq ] 2apply 2dup - 2 / , ! b = (p² - q²) / 2
[ sq ] bi@ 2dup - 2 / , ! b = (p² - q²) / 2
+ 2 / , ! c = (p² + q²) / 2
] { } make natural-sort ;

View File

@ -39,7 +39,7 @@ IN: project-euler.014
dup even? [ 2 / ] [ 3 * 1+ ] if ;
: longest ( seq seq -- seq )
2dup [ length ] 2apply > [ drop ] [ nip ] if ;
2dup [ length ] bi@ > [ drop ] [ nip ] if ;
PRIVATE>

View File

@ -58,7 +58,7 @@ PRIVATE>
: max-period ( seq -- elt n )
dup [ period-length ] map dup supremum
over index [ swap nth ] curry 2apply ;
over index [ swap nth ] curry bi@ ;
PRIVATE>

View File

@ -60,7 +60,7 @@ IN: project-euler.027
: max-consecutive ( seq -- elt n )
dup [ first2 consecutive-primes ] map dup supremum
over index [ swap nth ] curry 2apply ;
over index [ swap nth ] curry bi@ ;
PRIVATE>

View File

@ -33,10 +33,10 @@ IN: project-euler.033
10 99 [a,b] dup cartesian-product [ first2 < ] subset ;
: safe? ( ax xb -- ? )
[ 10 /mod ] 2apply -roll = rot zero? not and nip ;
[ 10 /mod ] bi@ -roll = rot zero? not and nip ;
: ax/xb ( ax xb -- z/f )
2dup safe? [ [ 10 /mod ] 2apply 2nip / ] [ 2drop f ] if ;
2dup safe? [ [ 10 /mod ] bi@ 2nip / ] [ 2drop f ] if ;
: curious? ( m n -- ? )
2dup / [ ax/xb ] dip = ;

View File

@ -31,7 +31,7 @@ IN: project-euler.044
dup 3 * 1- * 2 / ;
: sum-and-diff? ( m n -- ? )
2dup + -rot - [ pentagonal? ] 2apply and ;
2dup + -rot - [ pentagonal? ] bi@ and ;
PRIVATE>

View File

@ -35,7 +35,7 @@ IN: project-euler.079
] { } make ;
: find-source ( seq -- elt )
dup values swap keys [ prune ] 2apply seq-diff
dup values swap keys [ prune ] bi@ seq-diff
dup empty? [ "Topological sort failed" throw ] [ first ] if ;
: remove-source ( seq elt -- seq )

View File

@ -54,7 +54,7 @@ IN: random-tester
] if ;
: random-ratio ( -- ratio )
1000000000 dup [ random ] 2apply 1+ / 50% [ neg ] when dup [ drop random-ratio ] unless 10% [ drop 0 ] when ;
1000000000 dup [ random ] bi@ 1+ / 50% [ neg ] when dup [ drop random-ratio ] unless 10% [ drop 0 ] when ;
: random-float ( -- float )
50% [ random-ratio ] [ special-floats get random ] if

View File

@ -16,7 +16,7 @@ SYMBOL: ignore-case?
: char-between?-quot ( ch1 ch2 -- quot )
ignore-case? get
[ [ ch>upper ] 2apply [ >r >r ch>upper r> r> between? ] ]
[ [ ch>upper ] bi@ [ >r >r ch>upper r> r> between? ] ]
[ [ between? ] ]
if 2curry ;

View File

@ -16,7 +16,7 @@ SYMBOL: ignore-case?
: char-between?-quot ( ch1 ch2 -- quot )
ignore-case? get
[ [ ch>upper ] 2apply [ >r >r ch>upper r> r> between? ] ]
[ [ ch>upper ] bi@ [ >r >r ch>upper r> r> between? ] ]
[ [ between? ] ]
if 2curry ;

View File

@ -9,7 +9,7 @@ IN: reports.noise
{ -nrot 5 }
{ -roll 4 }
{ -rot 3 }
{ 2apply 1 }
{ bi@ 1 }
{ 2curry 1 }
{ 2drop 1 }
{ 2dup 1 }

View File

@ -23,7 +23,7 @@ TUPLE: roman-range-error n ;
] if ;
: roman<= ( ch1 ch2 -- ? )
[ 1string roman-digits index ] 2apply >= ;
[ 1string roman-digits index ] bi@ >= ;
: roman>n ( ch -- n )
1string roman-digits index roman-values nth ;
@ -57,7 +57,7 @@ PRIVATE>
<PRIVATE
: 2roman> ( str1 str2 -- m n )
[ roman> ] 2apply ;
[ roman> ] bi@ ;
: binary-roman-op ( str1 str2 quot -- str3 )
>r 2roman> r> call >roman ; inline

View File

@ -60,7 +60,7 @@ test-db [
"charlie" create-node* "charlie" set
"gertrude" create-node* "gertrude" set
[ t ] [ "adam" get "bob" get parent-child* integer? ] unit-test
{ { "eve" "bob" } { "eve" "fran" } { "bob" "gertrude" } { "bob" "fran" } { "fran" "charlie" } } [ first2 [ get ] 2apply parent-child ] each
{ { "eve" "bob" } { "eve" "fran" } { "bob" "gertrude" } { "bob" "fran" } { "fran" "charlie" } } [ first2 [ get ] bi@ parent-child ] each
[ { "bob" "fran" } ] [ "eve" get children [ node-content ] map ] unit-test
[ { "adam" "eve" } ] [ "bob" get parents [ node-content ] map ] unit-test
[ "fran" { "charlie" } ] [ "fran" get get-node-hierarchy dup tree-id node-content swap tree-children [ tree-id node-content ] map ] unit-test

View File

@ -24,7 +24,7 @@ C: <id> id
M: id hashcode* obj>> hashcode* ;
M: id equal? over id? [ [ obj>> ] 2apply eq? ] [ 2drop f ] if ;
M: id equal? over id? [ [ obj>> ] bi@ eq? ] [ 2drop f ] if ;
: add-object ( obj -- )
#! Add an object to the sequence of already serialized

View File

@ -20,7 +20,7 @@ IN: shufflers
: put-effect ( word -- )
dup word-name "-" split1
[ >array [ 1string ] map ] 2apply
[ >array [ 1string ] map ] bi@
<effect> "declared-effect" set-word-prop ;
: in-shuffle ( -- ) in get ".shuffle" append set-in ;

View File

@ -18,7 +18,7 @@ SYMBOL: board
: cell-contains? ( n x y i -- ? ) 3 /mod pair+ board> = ;
: box-contains? ( n x y -- ? )
[ 3 /i 3 * ] 2apply
[ 3 /i 3 * ] bi@
9 [ >r 3dup r> cell-contains? ] contains?
>r 3drop r> ;

View File

@ -35,7 +35,7 @@ linkname magic version uname gname devmajor devminor prefix ;
: header-checksum ( seq -- x )
148 cut-slice 8 tail-slice
[ sum ] 2apply + 256 + ;
[ sum ] bi@ + 256 + ;
TUPLE: checksum-error ;
TUPLE: malformed-block-error ;

View File

@ -40,7 +40,7 @@ unicode.categories ;
: score ( full fuzzy -- n )
dup [
[ [ length ] 2apply - 15 swap [-] 3 /f ] 2keep
[ [ length ] bi@ - 15 swap [-] 3 /f ] 2keep
runs [
[ 0 [ pick score-1 max ] reduce nip ] keep
length * +
@ -57,7 +57,7 @@ unicode.categories ;
: complete ( full short -- score )
[ dupd fuzzy score ] 2keep
[ <reversed> ] 2apply
[ <reversed> ] bi@
dupd fuzzy score max ;
: completion ( short candidate -- result )

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