~ chicken-core (chicken-5) 50191ad8b52bc5f67740b97aae168aa231f0f8c2
commit 50191ad8b52bc5f67740b97aae168aa231f0f8c2
Author: felix <felix@call-with-current-continuation.org>
AuthorDate: Fri May 21 22:08:37 2010 +0200
Commit: felix <felix@call-with-current-continuation.org>
CommitDate: Fri May 21 22:08:37 2010 +0200
should be put somewhere else
diff --git a/expand.scm b/expand.scm
index 13e4ee7d..043a6f3a 100644
--- a/expand.scm
+++ b/expand.scm
@@ -1922,73 +1922,3 @@
(set-module-sexports! mod sexports))))
(define ##sys#module-table '())
-
-
-;;; Procedure to pre-parse keyword argument lists
-
-(define ##sys#parse-keyword-argument-list
- (let ((reverse reverse)
- (string-append string-append))
- (lambda (arglist k+d k #!key (rename identity) (warn? #t) location)
- (let ((%let (rename 'let)))
- (define (warn msg . args)
- (when warn?
- (apply
- ##sys#warn
- (if location
- (string-append
- "(" (##sys#symbol->string location) ") "
- msg)
- msg)
- args)))
- (define (kw->sym kw)
- (##sys#string->symbol (##sys#symbol->string kw)))
- (let loop ((args arglist) (bindings '()))
- (cond ((null? args)
- `(,%let ,(map cdr (reverse bindings))
- (,%let ; bind variables with names of keyword args
- ,(let loop ((k+d k+d)) ; in case defaults refer to them
- (if (null? k+d)
- '()
- (let* ((x (car k+d))
- (kw (car x))
- (def (cdr x)))
- (cond ((assq kw bindings) =>
- (lambda (a)
- (cons (list (kw->sym kw) (cadr a))
- (loop (cdr k+d)))))
- (else
- (cons (list (kw->sym kw) def)
- (loop (cdr k+d))))))))
- ,(k (let loop ((k+d k+d))
- (if (null? k+d)
- '()
- (let* ((x (car k+d))
- (kw (car x)))
- (cond ((assq kw bindings) =>
- (lambda (a)
- (cons (cadr a) (loop (cdr k+d)))))
- (else
- (cons (kw->sym kw)
- (loop (cdr k+d))))))))))))
- ((not (pair? args))
- (warn "invalid argument list syntax" arglist)
- #f)
- (else
- (let ((arg (car args))
- (rest (cdr args)))
- (cond ((keyword? arg)
- (cond ((assq arg k+d) =>
- (lambda (a)
- (cond ((not (pair? rest))
- (warn "missing keyword argument value" arg arglist)
- #f)
- (else
- (let ((tmp (gensym arg)))
- (loop
- (cdr rest)
- (cons (list arg tmp (car rest)) bindings)))))))
- (else
- (warn "unrecognized keyword argument" arg arglist)
- #f)))
- (else #f))))))))))
Trap