20 lines
424 B
Scheme
20 lines
424 B
Scheme
|
|
(module util mzscheme
|
|
(provide extract-until)
|
|
|
|
(require (lib "stx.ss" "syntax"))
|
|
|
|
(define (extract-until r ids)
|
|
(let loop ([r r][val-stxs null])
|
|
(cond
|
|
[(stx-null? r)
|
|
(values #f #f)]
|
|
[(and (identifier? (stx-car r))
|
|
(ormap (lambda (id)
|
|
(module-identifier=? id (stx-car r)))
|
|
ids))
|
|
(values (reverse val-stxs) r)]
|
|
[else
|
|
(loop (stx-cdr r) (cons (stx-car r) val-stxs))]))))
|
|
|