bake.fry: commas factor
							parent
							
								
									54d0cdde4f
								
							
						
					
					
						commit
						12d22e593c
					
				| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
 | 
			
		||||
USING: kernel combinators arrays vectors quotations sequences splitting
 | 
			
		||||
       parser macros sequences.deep combinators.conditional bake newfx ;
 | 
			
		||||
       parser macros sequences.deep
 | 
			
		||||
       combinators.short-circuit combinators.conditional bake newfx ;
 | 
			
		||||
 | 
			
		||||
IN: bake.fry
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -53,28 +54,22 @@ DEFER: shallow-fry
 | 
			
		|||
 | 
			
		||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 | 
			
		||||
 | 
			
		||||
: bakeable? ( obj -- ? ) { [ array? ] [ vector? ] } 1|| ;
 | 
			
		||||
 | 
			
		||||
: fry-specifier? ( obj -- ? ) { , @ } member-of? ;
 | 
			
		||||
 | 
			
		||||
: count-inputs ( quot -- n ) flatten [ fry-specifier? ] count ;
 | 
			
		||||
 | 
			
		||||
: commas ( n -- seq ) , <repetition> ;
 | 
			
		||||
 | 
			
		||||
: [fry] ( quot -- quot' )
 | 
			
		||||
    [
 | 
			
		||||
      {
 | 
			
		||||
        {
 | 
			
		||||
          [ callable? ]
 | 
			
		||||
          [ [ count-inputs \ , <repetition> ] [ [fry] ] bi append ]
 | 
			
		||||
          { [ callable? ] [ [ count-inputs commas ] [ [fry]  ] bi append ] }
 | 
			
		||||
          { [ bakeable? ] [ [ count-inputs commas ] [ [bake] ] bi append ] }
 | 
			
		||||
          { [ drop t    ] [ 1quotation                                   ] }
 | 
			
		||||
        }
 | 
			
		||||
        {
 | 
			
		||||
          [ array? ]
 | 
			
		||||
          [ [ count-inputs \ , <repetition> ] [ [bake] ] bi append ]
 | 
			
		||||
        }
 | 
			
		||||
        {
 | 
			
		||||
          [ vector? ]
 | 
			
		||||
          [ [ count-inputs \ , <repetition> ] [ [bake] ] bi append ]
 | 
			
		||||
        }
 | 
			
		||||
        { [ drop t ] [ 1quotation   ] }
 | 
			
		||||
      }
 | 
			
		||||
        1cond
 | 
			
		||||
      1cond
 | 
			
		||||
    ]
 | 
			
		||||
  map concat deep-fry ;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue