2008-06-24 11:39:50 -04:00
|
|
|
USING: kernel combinators quotations arrays sequences assocs
|
2008-11-21 05:00:28 -05:00
|
|
|
locals generalizations macros fry ;
|
2008-06-24 09:35:06 -04:00
|
|
|
IN: combinators.short-circuit
|
|
|
|
|
2008-11-21 05:00:28 -05:00
|
|
|
MACRO:: n&& ( quots n -- quot )
|
|
|
|
[let | pairs [
|
|
|
|
quots [| q | { [ drop n ndup q dup not ] [ drop n ndrop f ] } ] map
|
|
|
|
{ [ t ] [ n nnip ] } suffix
|
|
|
|
] |
|
|
|
|
[ f pairs cond ]
|
|
|
|
] ;
|
|
|
|
|
|
|
|
MACRO: 0&& ( quots -- quot ) '[ _ 0 n&& ] ;
|
|
|
|
MACRO: 1&& ( quots -- quot ) '[ _ 1 n&& ] ;
|
|
|
|
MACRO: 2&& ( quots -- quot ) '[ _ 2 n&& ] ;
|
|
|
|
MACRO: 3&& ( quots -- quot ) '[ _ 3 n&& ] ;
|
|
|
|
|
|
|
|
MACRO:: n|| ( quots n -- quot )
|
|
|
|
[let | pairs [
|
|
|
|
quots
|
|
|
|
[| q | { [ drop n ndup q dup ] [ n nnip ] } ] map
|
|
|
|
{ [ drop n ndrop t ] [ f ] } suffix
|
|
|
|
] |
|
|
|
|
[ f pairs cond ]
|
|
|
|
] ;
|
|
|
|
|
|
|
|
MACRO: 0|| ( quots -- quot ) '[ _ 0 n|| ] ;
|
|
|
|
MACRO: 1|| ( quots -- quot ) '[ _ 1 n|| ] ;
|
|
|
|
MACRO: 2|| ( quots -- quot ) '[ _ 2 n|| ] ;
|
|
|
|
MACRO: 3|| ( quots -- quot ) '[ _ 3 n|| ] ;
|