~ chicken-core (chicken-5) e96f3ee314dcfa8e4f0d8bfe76f4361888ba0b5b


commit e96f3ee314dcfa8e4f0d8bfe76f4361888ba0b5b
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Fri Jul 29 14:37:14 2011 +0200
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Fri Jul 29 14:37:14 2011 +0200

    moved some list-operations into library.scm

diff --git a/csi.scm b/csi.scm
index 42228f6f..0474c874 100644
--- a/csi.scm
+++ b/csi.scm
@@ -43,10 +43,10 @@ EOF
 
 (private csi 
   print-usage print-banner
-  run hexdump del 
+  run hexdump
   parse-option-string chop-separator lookup-script-file
   report describe dump hexdump bytevector-data get-config
-  deldups tty-input?
+  tty-input?
   history-list history-count history-add history-ref history-clear history-show)
 
 (declare
@@ -908,24 +908,6 @@ EOF
 
 ;;; Start interpreting:
 
-(define (del x lst tst)
-  (let loop ([lst lst])
-    (if (null? lst)
-	'()
-	(let ([y (car lst)])
-	  (if (tst x y)
-	      (cdr lst)
-	      (cons y (loop (cdr lst))) ) ) ) ) )
-
-(define (deldups lis . maybe-=)
-  (let ((elt= (optional maybe-= equal?)))
-    (let recur ((lis lis))
-      (if (null? lis) lis
-	  (let* ((x (car lis))
-		 (tail (cdr lis))
-		 (new-tail (recur (del x tail elt=))))
-	    (if (eq? tail new-tail) lis (cons x new-tail)))))))
-
 (define (member* keys set)
   (let loop ((set set))
     (and (pair? set)
@@ -1054,7 +1036,7 @@ EOF
       (for-each register-feature! (collect-options "-D"))
       (for-each unregister-feature! (collect-options "-no-feature"))
       (set! ##sys#include-pathnames 
-	(deldups
+	(##sys#nodups
 	 (append (map chop-separator (collect-options "-include-path"))
 		 (map chop-separator (collect-options "-I"))
 		 ##sys#include-pathnames
diff --git a/expand.scm b/expand.scm
index 8ded474a..b6352340 100644
--- a/expand.scm
+++ b/expand.scm
@@ -904,6 +904,7 @@
   (cut ##sys#expand-import <> <> <> ##sys#current-environment ##sys#macro-environment 
        #f #t 'reexport) ) )
 
+;; contains only "import[-for-syntax]" and "reexport"
 (define ##sys#initial-macro-environment (##sys#macro-environment))
 
 (##sys#extend-macro-environment
@@ -1442,26 +1443,3 @@
   (##sys#fixup-macro-environment (##sys#macro-environment)))
 
 (define ##sys#meta-macro-environment (make-parameter (##sys#macro-environment)))
-
-
-;; Used by the syntax-rules implementation (and possibly handy elsewhere)
-;; (kindly contributed by Peter Bex)
-
-(define (##sys#drop-right input temp)
-  ;;XXX use unsafe accessors
-  (let loop ((len (length input))
-	     (input input))
-    (cond
-     ((> len temp)
-      (cons (car input)
-	    (loop (- len 1) (cdr input))))
-     (else '()))))
-
-(define (##sys#take-right input temp)
-  ;;XXX use unsafe accessors
-  (let loop ((len (length input))
-	     (input input))
-    (cond
-     ((> len temp)
-      (loop (- len 1) (cdr input)))
-     (else input))))
diff --git a/library.scm b/library.scm
index 4b5ff135..0f8f3df2 100644
--- a/library.scm
+++ b/library.scm
@@ -4881,3 +4881,45 @@ EOF
     (if (not (pair? lst))
 	z
 	(f (##sys#slot lst 0) (loop (##sys#slot lst 1))))))
+
+
+;; Some list-operations, used by the syntax-rules implementation, inside module
+;; implementation and in csi
+
+(define (##sys#del x lst tst)
+  (let loop ((lst lst))
+    (if (null? lst)
+	'()
+	(let ((y (car lst)))
+	  (if (tst x y)
+	      (cdr lst)
+	      (cons y (loop (cdr lst))) ) ) ) ) )
+
+(define (##sys#nodups lis elt=)
+  (let recur ((lis lis))
+    (if (null? lis) lis
+	(let* ((x (car lis))
+	       (tail (cdr lis))
+	       (new-tail (recur (##sys#del x tail elt=))))
+	  (if (eq? tail new-tail) lis (cons x new-tail))))))
+
+;; contributed by Peter Bex
+(define (##sys#drop-right input temp)
+  ;;XXX use unsafe accessors
+  (let loop ((len (length input))
+	     (input input))
+    (cond
+     ((> len temp)
+      (cons (car input)
+	    (loop (- len 1) (cdr input))))
+     (else '()))))
+
+(define (##sys#take-right input temp)
+  ;;XXX use unsafe accessors
+  (let loop ((len (length input))
+	     (input input))
+    (cond
+     ((> len temp)
+      (loop (- len 1) (cdr input)))
+     (else input))))
+
Trap