From 7caace8f13f8fa8454add31ada98976b45640af9 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Fri, 7 Oct 2016 23:54:47 -0400 Subject: [PATCH] Filter export lists for (only) and (except) --- scheme/cyclone/libraries.sld | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/scheme/cyclone/libraries.sld b/scheme/cyclone/libraries.sld index 0b8d760e..3a6535c4 100644 --- a/scheme/cyclone/libraries.sld +++ b/scheme/cyclone/libraries.sld @@ -222,7 +222,20 @@ (lib (read-all fp)) (exports (lib:exports (car lib)))) (close-input-port fp) - exports)) + (cond + ((tagged-list? 'only import) + ;; Filter to symbols from "only" that appear in export list + (filter + (lambda (sym) + (member sym exports)) + (cddr import))) + ((tagged-list? 'except import) + (filter + (lambda (sym) + (not (member sym (cddr import)))) + exports)) + (else + exports)))) ;; Take a list of imports and resolve it to the imported vars (define (lib:resolve-imports imports)