factor/basis/combinators/short-circuit/short-circuit.factor

36 lines
1.0 KiB
Factor
Raw Normal View History

2008-06-24 09:35:06 -04:00
USING: kernel combinators quotations arrays sequences assocs
locals generalizations macros fry ;
2008-06-24 09:35:06 -04:00
IN: combinators.short-circuit
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
:: n&&-rewrite ( quots N -- quot )
quots
[ '[ drop N ndup @ dup not ] [ drop N ndrop f ] 2array ]
map
[ t ] [ N nnip ] 2array suffix
2008-09-10 23:11:40 -04:00
'[ f _ cond ] ;
2008-06-24 09:35:06 -04:00
MACRO: 0&& ( quots -- quot ) 0 n&&-rewrite ;
MACRO: 1&& ( quots -- quot ) 1 n&&-rewrite ;
MACRO: 2&& ( quots -- quot ) 2 n&&-rewrite ;
2008-07-04 00:14:42 -04:00
MACRO: 3&& ( quots -- quot ) 3 n&&-rewrite ;
2008-06-24 09:35:06 -04:00
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
:: n||-rewrite ( quots N -- quot )
quots
[ '[ drop N ndup @ dup ] [ N nnip ] 2array ]
map
[ drop N ndrop t ] [ f ] 2array suffix
2008-09-10 23:11:40 -04:00
'[ f _ cond ] ;
2008-06-24 09:35:06 -04:00
MACRO: 0|| ( quots -- quot ) 0 n||-rewrite ;
MACRO: 1|| ( quots -- quot ) 1 n||-rewrite ;
MACRO: 2|| ( quots -- quot ) 2 n||-rewrite ;
2008-07-04 00:14:42 -04:00
MACRO: 3|| ( quots -- quot ) 3 n||-rewrite ;
2008-06-24 09:35:06 -04:00
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!