ref: 12c9d2fc728b51aa1eb9a70d0d331eb9464912d9
dir: /tools/mkboot0.lsp/
(def update-compiler
(let ((C ()))
(with-bindings
((eval (λ (x) (set! C (cons (compile-thunk (macroexpand x)) C)))))
(begin
(load "instructions.lsp")
(load "compiler.lsp")))
(λ () (begin
(for-each (λ (x) (x)) (reverse! C))
(set! update-compiler (λ () ()))))))
(def (compile-file inf)
(let ((in (file inf :read)))
(let next ((E (read in)))
(if (not (io-eof? in))
(begin
(print (compile-thunk (macroexpand E)))
(newline)
(next (read in)))))
(io-close in)))
(def (do-boot0)
(for-each (λ (file)
(compile-file file))
(cdr *argv*)))
(update-compiler)
(do-boot0)