Idiomdrottning’s homepage

DSSSL with varargs

This is so jank but I was frustrated with how the rest parameter redundantly has all the keywords left in (unlike stragglers in define-options) so I did a grobian solution at least for now:

(define (strip-keys keys) (fn (strip-keys x keys)))

(define (strip-keys lis keys) (cons (car lis) (strip-keys (cdr lis) keys)))

(define (strip-keys (kw val . lis) keys)
  (strip-keys (require (member kw keys) lis) keys))

(define (strip-keys () keys) '())

And then here’s an example of it in use:

(define (lsrss #!rest files #!key (append #f))
  (set! files (strip-keys files '(#:append)))
  (...))