19 lines
545 B
Scheme
19 lines
545 B
Scheme
;; named-args->alist does this:
|
|
;; '(a 5 b 6 ((c . 10) (d . 5))) -> '((a . 5) (b . 6) (c . 10) (d . 5))
|
|
;; '(e 3) -> '((e . 3))
|
|
;; '((f . 0)) -> '((f . 0))
|
|
;; (hard to explain :-)
|
|
|
|
(define (named-args->alist args)
|
|
(let loop ((alist '())
|
|
(args args))
|
|
(cond
|
|
((null? args) (reverse alist))
|
|
((null? (cdr args)) (loop (append (car args) alist) '()))
|
|
(else (let ((sym (car args))
|
|
(val (cadr args)))
|
|
(loop (cons (cons sym val) alist)
|
|
(cddr args)))))))
|
|
|
|
|
|
(define-exported-binding "string->symbol" string->symbol) |