aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/csc/compiler.csc6
-rw-r--r--lib/csc/flag.csc13
2 files changed, 12 insertions, 7 deletions
diff --git a/lib/csc/compiler.csc b/lib/csc/compiler.csc
index 20d5d37..7054f10 100644
--- a/lib/csc/compiler.csc
+++ b/lib/csc/compiler.csc
@@ -1,6 +1,6 @@
(define-library (csc compiler)
(export
- *library-search-dirs*
+ add-library-search-dirs
compile)
(import (scheme base)
(only (scheme file)
@@ -88,6 +88,10 @@
(define *library-search-dirs* '())
+ (define (add-library-search-dirs ds)
+ (set! *library-search-dirs* (append *library-search-dirs* ds)))
+
+
(define (find-library name)
(define library-roots (cons *standard-library-dir* *library-search-dirs*))
(loop for dir in library-roots
diff --git a/lib/csc/flag.csc b/lib/csc/flag.csc
index c0a28a8..c26fa90 100644
--- a/lib/csc/flag.csc
+++ b/lib/csc/flag.csc
@@ -38,9 +38,11 @@
(define *parsers* (make-map compare-strings))
- ; I'm working around a Guile bug, which wrongly concludes
- ; that *parsers* is immutable.
- (set! *parsers* *parsers*)
+
+
+ (define (add-parser flag bool? setter)
+ (set! *parsers* (insert *parsers* flag
+ (make-flag bool? setter))))
(define-record-type <flag>
@@ -55,9 +57,8 @@
((define-flag name flag type default)
(begin
(define name default)
- (set! *parsers* (insert *parsers* flag
- (make-flag (eq? type bool-flag)
- (lambda (x) (set! name (type x))))))))))
+ (add-parser flag (eq? type bool-flag)
+ (lambda (x) (set! name (type x))))))))
(define *args* '())