implemented Filtering & partitioning
This commit is contained in:
		
							parent
							
								
									4e00cfc86a
								
							
						
					
					
						commit
						2f550aee49
					
				|  | @ -412,14 +412,37 @@ | |||
|                   (filter pred (cdr list))) | ||||
|             (filter pred (cdr list))))) | ||||
| 
 | ||||
|   ;; means for inter-referential definition | ||||
|   (define remove #f) | ||||
|    | ||||
|   (define (partition pred list) | ||||
|     (values (filter pred list) | ||||
|             (filter (lambda (x) (not (pred x))) list))) | ||||
|             (remove pred list))) | ||||
| 
 | ||||
|   (define (remove pred list) | ||||
|     (filter (lambda (x) (not (pred x))) list)) | ||||
| 
 | ||||
|   (export filter partition remove) | ||||
|   (define (filter! pred list) | ||||
|     (let rec ((lst list)) | ||||
|       (if (null? lst) | ||||
| 	  lst | ||||
| 	  (if (pred (car lst)) | ||||
| 	      (begin (set-cdr! lst (rec (cdr lst))) | ||||
| 		     lst) | ||||
| 	      (rec (cdr lst)))))) | ||||
|    | ||||
|   ;; means for inter-referential definition | ||||
|   (define remove! #f) | ||||
|    | ||||
|   (define (partition! pred list) | ||||
|     (values (filter! pred list) | ||||
| 	    (remove! pred list))) | ||||
| 
 | ||||
|   (define (remove! pred list) | ||||
|     (filter! (lambda (x) (net (pred x))) list)) | ||||
| 
 | ||||
|   (export filter partition remove | ||||
| 	  filter! partition! remove!) | ||||
| 
 | ||||
|   ;; # Searching | ||||
|   ;; member memq memv | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 stibear
						stibear