~ chicken-core (chicken-5) 5b3f2c5ec26914b10d8d3c9abed73550949cb6d6
commit 5b3f2c5ec26914b10d8d3c9abed73550949cb6d6 Author: Peter Bex <peter@more-magic.net> AuthorDate: Sun Apr 30 18:02:09 2017 +0200 Commit: Evan Hanson <evhan@foldling.org> CommitDate: Mon Jun 5 16:12:33 2017 +1200 Remove ##sys#nodups and ##sys#del The ##sys#nodups and corresponding ##sys#del procedures are just differently named (and specialisable) versions of delete-duplicates and delete from SRFI-1. So, we load mini-srfi-1.scm into csi.scm, and get rid of those definition in library.scm. We also get rid of the optional arguments in the SRFI-1 "delete" and "delete-duplicates" definitions because that's completely unnecessary for a fast internal API. Signed-off-by: Evan Hanson <evhan@foldling.org> diff --git a/batch-driver.scm b/batch-driver.scm index 85307c4f..45bea523 100644 --- a/batch-driver.scm +++ b/batch-driver.scm @@ -448,7 +448,7 @@ (when (not f) (quit-compiling "cannot load extension: ~a" e)) (load f))) extends) ) - (set! ##sys#features (delete #:compiler-extension ##sys#features)) + (set! ##sys#features (delete #:compiler-extension ##sys#features eq?)) (set! ##sys#features (cons '#:compiling ##sys#features)) (set! upap (user-post-analysis-pass)) diff --git a/chicken-status.scm b/chicken-status.scm index 3b957ae6..32f6b09c 100644 --- a/chicken-status.scm +++ b/chicken-status.scm @@ -77,7 +77,7 @@ (lambda (egg) (any (cut string=? <> egg) patterns)) eggs))))) - (delete-duplicates names))) + (delete-duplicates names string=?))) (define (gather-eggs) (delete-duplicates diff --git a/chicken-uninstall.scm b/chicken-uninstall.scm index df8fa01e..af617d5a 100644 --- a/chicken-uninstall.scm +++ b/chicken-uninstall.scm @@ -69,7 +69,7 @@ (lambda (egg) (any (cut string=? <> egg) patterns)) eggs)))) - (delete-duplicates pats))) + (delete-duplicates pats string=?))) (define (fini code) (print "aborted.") diff --git a/core.scm b/core.scm index e73d207c..428833f6 100644 --- a/core.scm +++ b/core.scm @@ -999,7 +999,7 @@ ;; Remove from list to avoid error (when (pair? il) (set! import-libraries - (delete il import-libraries))) + (delete il import-libraries equal?))) (values (reverse xs) '()))) ((not enable-module-registration) (values (reverse xs) '())) @@ -2437,7 +2437,7 @@ (when (pair? (cdr params)) (bomb "let-node has invalid format" params)) (let ((c (gather (first subs) here locals)) (var (first params))) - (append c (delete var (gather (second subs) here (cons var locals)))))) + (append c (delete var (gather (second subs) here (cons var locals)) eq?)))) ((set!) (let ((var (first params)) diff --git a/csi.scm b/csi.scm index d03c1690..583b495b 100644 --- a/csi.scm +++ b/csi.scm @@ -60,6 +60,7 @@ EOF chicken.repl) (include "banner.scm") +(include "mini-srfi-1.scm") ;;; Parameters: @@ -961,6 +962,7 @@ EOF (define-constant complex-options '("-D" "-feature" "-I" "-include-path" "-K" "-keyword-style" "-no-feature") ) + (define (run) (let* ([extraopts (parse-option-string (or (get-environment-variable "CSI_OPTIONS") ""))] [args (canonicalize-args (command-line-arguments))] @@ -1033,7 +1035,7 @@ EOF (for-each register-feature! (collect-options "-D")) (for-each unregister-feature! (collect-options "-no-feature")) (set! ##sys#include-pathnames - (##sys#nodups + (delete-duplicates (append (map chop-separator (collect-options "-include-path")) (map chop-separator (collect-options "-I")) ##sys#include-pathnames diff --git a/library.scm b/library.scm index 16c47833..3c55eb23 100644 --- a/library.scm +++ b/library.scm @@ -5737,27 +5737,6 @@ EOF 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 diff --git a/mini-srfi-1.scm b/mini-srfi-1.scm index cd74dbe4..627aa0f7 100644 --- a/mini-srfi-1.scm +++ b/mini-srfi-1.scm @@ -26,8 +26,8 @@ (declare - (unused take span drop partition split-at append-map every any cons* concatenate delete - first second third fourth alist-cons delete-duplicates fifth remove + (unused take span drop partition split-at append-map every any cons* concatenate + first second third fourth alist-cons fifth remove filter filter-map unzip1 last list-index lset-adjoin/eq? lset-difference/eq? lset-union/eq? lset-intersection/eq? list-tabulate lset<=/eq? lset=/eq? length+ find find-tail iota make-list posq posv) @@ -100,7 +100,7 @@ '() (append (car lst) (loop (cdr lst)))))) -(define (delete x lst #!optional (test equal?)) +(define (delete x lst test) (let loop ((lst lst)) (cond ((null? lst) lst) ((test x (car lst)) @@ -114,7 +114,7 @@ (define (fourth x) (cadddr x)) (define (fifth x) (car (cddddr x))) -(define (delete-duplicates lst #!optional (test equal?)) +(define (delete-duplicates lst test) (let loop ((lst lst)) (if (null? lst) lst diff --git a/optimizer.scm b/optimizer.scm index 2e5381ba..99703051 100644 --- a/optimizer.scm +++ b/optimizer.scm @@ -124,7 +124,7 @@ (debugging 'p "scanning toplevel assignments...") (scan node '()) (when (pair? safe) - (debugging 'o "safe globals" (delete-duplicates safe))) + (debugging 'o "safe globals" (delete-duplicates safe eq?))) (for-each (cut mark-variable <> '##compiler#always-bound) safe))) diff --git a/rules.make b/rules.make index 35a9132f..a1638563 100644 --- a/rules.make +++ b/rules.make @@ -866,7 +866,7 @@ endef $(foreach obj, $(COMPILER_OBJECTS_1),\ $(eval $(call declare-bootstrap-compiler-object,$(obj)))) -csi.c: $(SRCDIR)csi.scm $(SRCDIR)banner.scm +csi.c: $(SRCDIR)csi.scm $(SRCDIR)banner.scm $(SRCDIR)mini-srfi-1.scm $(CHICKEN) $< $(CHICKEN_PROGRAM_OPTIONS) -output-file $@ chicken-profile.c: $(SRCDIR)chicken-profile.scm $(SRCDIR)mini-srfi-1.scm $(CHICKEN) $< $(CHICKEN_PROGRAM_OPTIONS) -output-file $@Trap