From 87910d4ffeb131921691002a3f7136d8463b7f58 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Mon, 22 Aug 2016 17:53:12 -0400 Subject: [PATCH] Use lib:get-all to read library contents This allows multiple import, export, and begin directives within a define-library. --- scheme/cyclone/libraries.sld | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/scheme/cyclone/libraries.sld b/scheme/cyclone/libraries.sld index 4b26e0b6..21da492f 100644 --- a/scheme/cyclone/libraries.sld +++ b/scheme/cyclone/libraries.sld @@ -90,11 +90,12 @@ (foldr append '() (map cdr (filter (lambda (l) (tagged-list? tag l)) (cddr ast))))) - -(define (lib:raw-exports ast) - (lib:result - (let ((code (assoc 'export (cddr ast)))) - (if code (cdr code) #f)))) +(define (lib:body ast) + (lib:get-all ast 'begin)) +(define (lib:imports ast) + (map lib:list->import-set (lib:get-all ast 'import))) +(define (lib:raw-exports ast) + (lib:get-all ast 'export)) (define (lib:rename-exports ast) (filter (lambda (ex) @@ -108,15 +109,6 @@ (caddr ex) ex)) (lib:raw-exports ast))) -(define (lib:imports ast) - (lib:result - (let ((code (assoc 'import (cddr ast)))) - (if code (map lib:list->import-set (cdr code)) - #f)))) -(define (lib:body ast) - (lib:result - (let ((code (assoc 'begin (cddr ast)))) - (if code (cdr code) #f)))) (define (lib:includes ast) (map (lambda (inc-lst)