Adding include and include-ci to (scheme base).

The cwd is undefined - these macros are useless.
This commit is contained in:
Alex Shinn 2012-10-14 22:37:46 +09:00
parent 993e690891
commit bc4d01eac0
2 changed files with 26 additions and 1 deletions

View file

@ -25,7 +25,8 @@
error-object-irritants error-object-message error-object? even? error-object-irritants error-object-message error-object? even?
exact exact-integer-sqrt exact-integer? exact? expt features floor exact exact-integer-sqrt exact-integer? exact? expt features floor
flush-output-port for-each gcd get-output-bytevector get-output-string flush-output-port for-each gcd get-output-bytevector get-output-string
guard if import inexact inexact? input-port? integer->char guard if import include include-ci inexact inexact? input-port?
integer->char
integer? lambda lcm length let let* let*-values let-syntax let-values integer? lambda lcm length let let* let*-values let-syntax let-values
letrec letrec* letrec-syntax list list->string list->vector list-copy letrec letrec* letrec-syntax list list->string list->vector list-copy
list-ref list-set! list-tail list? make-bytevector make-list list-ref list-set! list-tail list? make-bytevector make-list

View file

@ -1,4 +1,28 @@
(define (read-sexps file . o)
(let ((in (open-input-file file)))
(if (and (pair? o) (car o))
(set-port-fold-case! in #t))
(let lp ((res '()))
(let ((x (read in)))
(if (eof-object? x) res (lp (cons x res)))))))
(define-syntax include
(er-macro-transformer
(lambda (expr rename compare)
(let lp ((files (cdr expr)) (res '()))
(cond
((null? files) (cons (rename 'begin) (reverse res)))
(else (lp (cdr files) (append (read-sexps (car files)) res))))))))
(define-syntax include-ci
(er-macro-transformer
(lambda (expr rename compare)
(let lp ((files (cdr expr)) (res '()))
(cond
((null? files) (cons (rename 'begin) (reverse res)))
(else (lp (cdr files) (append (read-sexps (car files) #t) res))))))))
(define (features) *features*) (define (features) *features*)
(define exact inexact->exact) (define exact inexact->exact)