racket/collects/r5rs/run.rkt
2010-04-27 16:50:15 -06:00

38 lines
1.1 KiB
Racket

#lang scheme/base
(require scheme/cmdline)
(define slow (make-parameter #f))
(define-values (main args)
(command-line
#:once-each
[("--no-prim") "allow redefinition of primitives (implies worse performance)"
(slow #t)]
#:handlers
(case-lambda
[(x) (values #f null)]
[(x file . args) (values file args)])
'("file" "arg")))
(if (slow)
(namespace-require/copy 'r5rs/init)
(namespace-require/constant 'r5rs/init))
(current-command-line-arguments (apply vector-immutable args))
(if main
;; File load mode:
(load main)
;; REPL mode:
(begin
(display (banner))
(printf "R5RS legacy support loaded\n")
;; Load .pltr5rsrc
(let-values ([(base name dir?) (split-path (find-system-path 'init-file))])
(let ([f (build-path base (bytes->path-element
(regexp-replace #rx#"mzscheme"
(path-element->bytes name)
#"pltr5rs")))])
(when (file-exists? f)
(load f))))
(read-eval-print-loop)))