27 lines
626 B
Scheme
27 lines
626 B
Scheme
;; -*- mode: scheme; coding: utf-8 -*-
|
|
;; SPDX-License-Identifier: CC0-1.0
|
|
#!r6rs
|
|
|
|
(library (scheme load)
|
|
(export
|
|
load)
|
|
(import
|
|
(rnrs)
|
|
(only (akku-r7rs compat) interaction-environment eval)
|
|
(laesare reader))
|
|
|
|
(define load
|
|
(case-lambda
|
|
((fn)
|
|
(load fn (interaction-environment)))
|
|
((fn env)
|
|
(call-with-input-file fn
|
|
(lambda (p)
|
|
(let ((reader (make-reader p fn)))
|
|
(reader-mode-set! reader 'r7rs)
|
|
(let lp ()
|
|
(let ((x (read-datum reader)))
|
|
(unless (eof-object? x)
|
|
(eval x env)
|
|
(lp)))))))))))
|