X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2Futils.scm;h=ed09712d9a990531d9e9daecdc81e1131596aed1;hb=bdc03bcc2da4d01745fb542d7a7d642b888b691e;hp=eb20531fdc90680abfcd224e942d81afd510af43;hpb=2c3c0bff524bdc8365f0c5e52b1b6a7d21e3099f;p=gacela.git diff --git a/src/utils.scm b/src/utils.scm index eb20531..ed09712 100644 --- a/src/utils.scm +++ b/src/utils.scm @@ -19,7 +19,9 @@ #:export (use-cache-with arguments-calling arguments-apply - bound?)) + bound? + names-arguments + make-producer)) ;;; Cache for procedures @@ -144,6 +146,11 @@ (keyword-arguments-apply args values) (rest-arguments-apply args values)))) +(define (names-arguments args) + (map (lambda (x) (if (list? x) (car x) x)) + (filter (lambda (x) (not (keyword? x))) + (pair-to-list args)))) + ;;; Continuations and coroutines @@ -160,3 +167,11 @@ (if resume (resume real-send) (body send)))) + + +;;; Miscellaneous + +(define (pair-to-list pair) + (cond ((null? pair) '()) + ((not (pair? pair)) (list pair)) + (else (cons (car pair) (pair-to-list (cdr pair))))))