Make let-kw-form more portable to other syntax-case schemes

* goof.scm (let-kw-form): don't use guile-specific with-ellipsis.
This commit is contained in:
Linus 2021-09-25 21:27:50 +02:00
parent 050f88d678
commit f5a3629b56

View file

@ -206,18 +206,17 @@
((_ macro-name final-fun (user-finals ...) (loop-name (var step) ...) . body) ((_ macro-name final-fun (user-finals ...) (loop-name (var step) ...) . body)
(let-syntax ((macro-name (let-syntax ((macro-name
(lambda (stx) (lambda (stx)
(with-ellipsis :::
(let loop ((lst (cdr (syntax->list stx))) (let loop ((lst (cdr (syntax->list stx)))
(params (list #'(var step) ...))) (params (list #'(var step) ...)))
(if (null? lst) (if (null? lst)
(with-syntax ((((v s) :::) params)) (with-syntax ((((v s) (... ...)) params))
#'(inner-recur loop-name final-fun #'(inner-recur loop-name final-fun
(user-finals ...) (user-finals ...)
((v s) :::))) ((v s) (... ...))))
(syntax-case (car lst) (=>) (syntax-case (car lst) (=>)
((=> name val) ((=> name val)
(loop (cdr lst) (update-name params #'name #'val))) (loop (cdr lst) (update-name params #'name #'val)))
(_ (error "Malformed looping clause in macro"))))))))) (_ (error "Malformed looping clause in macro"))))))))
. body)))) . body))))