Moving extra/lisp/conses to extra/lists
							parent
							
								
									25fa024898
								
							
						
					
					
						commit
						cfc3381cab
					
				| 
						 | 
					@ -1 +0,0 @@
 | 
				
			||||||
Cons cell helper functions for extra/lisp
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,8 +1,8 @@
 | 
				
			||||||
! Copyright (C) 2008 James Cash
 | 
					! Copyright (C) 2008 James Cash
 | 
				
			||||||
! See http://factorcode.org/license.txt for BSD license.
 | 
					! See http://factorcode.org/license.txt for BSD license.
 | 
				
			||||||
USING: tools.test lisp.conses math ;
 | 
					USING: tools.test lists math ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
IN: lisp.conses.tests
 | 
					IN: lists.tests
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{ { 3 4 5 6 } } [
 | 
					{ { 3 4 5 6 } } [
 | 
				
			||||||
    T{ cons f 1       
 | 
					    T{ cons f 1       
 | 
				
			||||||
| 
						 | 
					@ -11,3 +11,11 @@ IN: lisp.conses.tests
 | 
				
			||||||
                T{ cons f 4
 | 
					                T{ cons f 4
 | 
				
			||||||
                T{ cons f f f } } } } } [ 2 + ] map-cons
 | 
					                T{ cons f f f } } } } } [ 2 + ] map-cons
 | 
				
			||||||
] unit-test
 | 
					] unit-test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{ 10 } [
 | 
				
			||||||
 | 
					 T{ cons f 1       
 | 
				
			||||||
 | 
					        T{ cons f 2 
 | 
				
			||||||
 | 
					            T{ cons f 3
 | 
				
			||||||
 | 
					                T{ cons f 4
 | 
				
			||||||
 | 
					                T{ cons f f f } } } } } 0 [ + ] reduce-cons
 | 
				
			||||||
 | 
					] unit-test
 | 
				
			||||||
| 
						 | 
					@ -2,7 +2,7 @@
 | 
				
			||||||
! See http://factorcode.org/license.txt for BSD license.
 | 
					! See http://factorcode.org/license.txt for BSD license.
 | 
				
			||||||
USING: kernel sequences accessors ;
 | 
					USING: kernel sequences accessors ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
IN: lisp.conses 
 | 
					IN: lists
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TUPLE: cons car cdr ;
 | 
					TUPLE: cons car cdr ;
 | 
				
			||||||
: cons \ cons new ;
 | 
					: cons \ cons new ;
 | 
				
			||||||
| 
						 | 
					@ -26,6 +26,9 @@ TUPLE: cons car cdr ;
 | 
				
			||||||
: map-cons ( cons quot -- seq )
 | 
					: map-cons ( cons quot -- seq )
 | 
				
			||||||
    [ { } clone ] 2dip (map-cons) ;
 | 
					    [ { } clone ] 2dip (map-cons) ;
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					: cons>seq ( cons -- array )    
 | 
				
			||||||
 | 
					    [ ] map-cons ;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
: reduce-cons ( cons identity quot -- result )    
 | 
					: reduce-cons ( cons identity quot -- result )    
 | 
				
			||||||
    pick null? [ drop nip ]
 | 
					    pick null? [ drop nip ]
 | 
				
			||||||
    [ [ uncons ] 2dip swapd [ call ] keep reduce-cons ] if ;
 | 
					    [ [ uncons ] 2dip swapd [ call ] keep reduce-cons ] if ;
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					Implementation of lisp-style linked lists
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,3 @@
 | 
				
			||||||
lisp
 | 
					 | 
				
			||||||
cons
 | 
					cons
 | 
				
			||||||
lists
 | 
					lists
 | 
				
			||||||
sequences
 | 
					sequences
 | 
				
			||||||
		Loading…
	
		Reference in New Issue