| 
									
										
										
										
											2011-11-30 19:02:37 -05:00
										 |  |  | USING: arrays combinators fry generalizations kernel macros | 
					
						
							|  |  |  | math sequences ;
 | 
					
						
							| 
									
										
										
										
											2008-06-24 09:35:06 -04:00
										 |  |  | IN: combinators.short-circuit | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-08 20:32:53 -05:00
										 |  |  | <PRIVATE
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MACRO: keeping ( n quot -- quot' )
 | 
					
						
							|  |  |  |     swap dup 1 +
 | 
					
						
							|  |  |  |     '[ _ _ nkeep _ nrot ] ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PRIVATE>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-08 16:15:36 -04:00
										 |  |  | MACRO: n&& ( quots n -- quot )
 | 
					
						
							|  |  |  |     [ | 
					
						
							|  |  |  |         [ [ f ] ] 2dip swap [ | 
					
						
							| 
									
										
										
										
											2010-02-08 20:32:53 -05:00
										 |  |  |             [ '[ drop _ _ keeping dup not ] ] | 
					
						
							| 
									
										
										
										
											2009-09-08 16:15:36 -04:00
										 |  |  |             [ drop '[ drop _ ndrop f ] ] | 
					
						
							|  |  |  |             2bi 2array
 | 
					
						
							|  |  |  |         ] with map
 | 
					
						
							|  |  |  |     ] [ '[ _ nnip ] suffix 1array ] bi
 | 
					
						
							| 
									
										
										
										
											2008-11-21 05:36:18 -05:00
										 |  |  |     [ cond ] 3append ;
 | 
					
						
							| 
									
										
										
										
											2008-11-21 05:00:28 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-07-18 07:38:34 -04:00
										 |  |  | <PRIVATE
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : unoptimized-&& ( quots quot -- ? )
 | 
					
						
							|  |  |  |     [ [ call dup ] ] dip call [ nip ] prepose [ f ] 2dip all? swap and ; inline
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PRIVATE>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : 0&& ( quots -- ? ) [ ] unoptimized-&& ;
 | 
					
						
							|  |  |  | : 1&& ( obj quots -- ? ) [ with ] unoptimized-&& ;
 | 
					
						
							| 
									
										
										
										
											2014-07-22 09:09:26 -04:00
										 |  |  | : 2&& ( obj1 obj2 quots -- ? ) [ 2with ] unoptimized-&& ;
 | 
					
						
							|  |  |  | : 3&& ( obj1 obj2 obj3 quots -- ? ) [ 3 nwith ] unoptimized-&& ;
 | 
					
						
							| 
									
										
										
										
											2008-11-21 05:00:28 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-08 16:15:36 -04:00
										 |  |  | MACRO: n|| ( quots n -- quot )
 | 
					
						
							|  |  |  |     [ | 
					
						
							|  |  |  |         [ [ f ] ] 2dip swap [ | 
					
						
							| 
									
										
										
										
											2010-02-08 20:32:53 -05:00
										 |  |  |             [ '[ drop _ _ keeping dup ] ] | 
					
						
							| 
									
										
										
										
											2009-09-08 16:15:36 -04:00
										 |  |  |             [ drop '[ _ nnip ] ] | 
					
						
							|  |  |  |             2bi 2array
 | 
					
						
							|  |  |  |         ] with map
 | 
					
						
							|  |  |  |     ] [ '[ drop _ ndrop t ] [ f ] 2array suffix 1array ] bi
 | 
					
						
							| 
									
										
										
										
											2008-11-21 05:36:18 -05:00
										 |  |  |     [ cond ] 3append ;
 | 
					
						
							| 
									
										
										
										
											2008-11-21 05:00:28 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-07-18 07:38:34 -04:00
										 |  |  | <PRIVATE
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : unoptimized-|| ( quots quot -- ? )
 | 
					
						
							|  |  |  |     [ [ call ] ] dip call map-find drop ; inline
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PRIVATE>
 | 
					
						
							| 
									
										
										
										
											2009-07-18 04:33:45 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-07-18 07:38:34 -04:00
										 |  |  | : 0|| ( quots -- ? ) [ ] unoptimized-|| ;
 | 
					
						
							|  |  |  | : 1|| ( obj quots -- ? ) [ with ] unoptimized-|| ;
 | 
					
						
							| 
									
										
										
										
											2014-07-22 09:09:26 -04:00
										 |  |  | : 2|| ( obj1 obj2 quots -- ? ) [ 2with ] unoptimized-|| ;
 | 
					
						
							|  |  |  | : 3|| ( obj1 obj2 obj3 quots -- ? ) [ 3 nwith ] unoptimized-|| ;
 |