diff --git a/extra/combinators/lib/lib.factor b/extra/combinators/lib/lib.factor index 9c46c129af..3f49da7cb3 100644 --- a/extra/combinators/lib/lib.factor +++ b/extra/combinators/lib/lib.factor @@ -5,7 +5,7 @@ USING: kernel combinators namespaces quotations hashtables sequences assocs arrays inference effects math math.ranges arrays.lib shuffle macros - bake ; + bake combinators.cleave ; IN: combinators.lib @@ -16,34 +16,6 @@ IN: combinators.lib [ slip over slip ] 2keep 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 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!