Factor cleave/spread combinators out of combinators.lib
parent
c02872da30
commit
760780adca
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
USING: kernel combinators namespaces quotations hashtables sequences assocs
|
USING: kernel combinators namespaces quotations hashtables sequences assocs
|
||||||
arrays inference effects math math.ranges arrays.lib shuffle macros
|
arrays inference effects math math.ranges arrays.lib shuffle macros
|
||||||
bake ;
|
bake combinators.cleave ;
|
||||||
|
|
||||||
IN: combinators.lib
|
IN: combinators.lib
|
||||||
|
|
||||||
|
@ -16,34 +16,6 @@ IN: combinators.lib
|
||||||
[ slip over slip ] 2keep
|
[ slip over slip ] 2keep
|
||||||
roll [ 2drop ] [ rot drop generate ] if ; inline
|
roll [ 2drop ] [ rot drop generate ] if ; inline
|
||||||
|
|
||||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
! The cleaver family
|
|
||||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
|
|
||||||
: bi ( obj quot quot -- val val ) >r over slip r> call ; inline
|
|
||||||
|
|
||||||
: tri ( obj quot quot quot -- val val val )
|
|
||||||
>r pick >r bi r> r> call ; inline
|
|
||||||
|
|
||||||
: tetra ( obj quot quot quot quot -- val val val val )
|
|
||||||
>r >r pick >r bi r> r> r> bi ; inline
|
|
||||||
|
|
||||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
|
|
||||||
: 2bi ( obj obj quot quot -- val val ) >r 2keep r> call ; inline
|
|
||||||
|
|
||||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
! The spread family
|
|
||||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
|
|
||||||
: bi* ( obj obj quot quot -- val val ) >r swap >r call r> r> call ; inline
|
|
||||||
|
|
||||||
: tri* ( obj obj obj quot quot quot -- val val val )
|
|
||||||
>r rot >r bi* r> r> call ; inline
|
|
||||||
|
|
||||||
: tetra* ( obj obj obj obj quot quot quot quot -- val val val val )
|
|
||||||
>r roll >r tri* r> r> call ; inline
|
|
||||||
|
|
||||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
! Generalized versions of core combinators
|
! Generalized versions of core combinators
|
||||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
Loading…
Reference in New Issue