1 USING: arrays combinators generalizations kernel math sequences ;
2 IN: combinators.short-circuit
6 MACRO: keeping ( n quot -- quot' )
7 swap dup 1 + '[ _ _ nkeep _ nrot ] ;
11 MACRO: n&& ( quots n -- quot )
14 [ '[ drop _ _ keeping dup not ] ]
15 [ drop '[ drop _ ndrop f ] ]
18 ] [ '[ _ nnip ] suffix 1array ] bi
21 : 0&& ( quots -- ? ) 0 n&& ;
22 : 1&& ( obj quots -- ? ) 1 n&& ;
23 : 2&& ( obj1 obj2 quots -- ? ) 2 n&& ;
24 : 3&& ( obj1 obj2 obj3 quots -- ? ) 3 n&& ;
26 MACRO: n|| ( quots n -- quot )
29 [ '[ drop _ _ keeping dup ] ]
33 ] [ '[ drop _ ndrop t ] [ f ] 2array suffix 1array ] bi
36 : 0|| ( quots -- ? ) 0 n|| ;
37 : 1|| ( obj quots -- ? ) 1 n|| ;
38 : 2|| ( obj1 obj2 quots -- ? ) 2 n|| ;
39 : 3|| ( obj1 obj2 obj3 quots -- ? ) 3 n|| ;