1 USING: arrays combinators fry generalizations kernel macros
3 IN: combinators.short-circuit
7 MACRO: keeping ( n quot -- quot' )
8 swap dup 1 + '[ _ _ nkeep _ nrot ] ;
12 MACRO: n&& ( quots n -- quot )
15 [ '[ drop _ _ keeping dup not ] ]
16 [ drop '[ drop _ ndrop f ] ]
19 ] [ '[ _ nnip ] suffix 1array ] bi
22 : 0&& ( quots -- ? ) 0 n&& ;
23 : 1&& ( obj quots -- ? ) 1 n&& ;
24 : 2&& ( obj1 obj2 quots -- ? ) 2 n&& ;
25 : 3&& ( obj1 obj2 obj3 quots -- ? ) 3 n&& ;
27 MACRO: n|| ( quots n -- quot )
30 [ '[ drop _ _ keeping dup ] ]
34 ] [ '[ drop _ ndrop t ] [ f ] 2array suffix 1array ] bi
37 : 0|| ( quots -- ? ) 0 n|| ;
38 : 1|| ( obj quots -- ? ) 1 n|| ;
39 : 2|| ( obj1 obj2 quots -- ? ) 2 n|| ;
40 : 3|| ( obj1 obj2 obj3 quots -- ? ) 3 n|| ;