38 lines
1.1 KiB
Racket
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)))
|