-
Notifications
You must be signed in to change notification settings - Fork 0
/
as.scm
31 lines (26 loc) · 886 Bytes
/
as.scm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#lang racket/load
; racket -f as.scm
; (asv)
; http://localhost:8080
(require racket/runtime-path)
(define-runtime-path arc-home ".")
(define arc-curdir (current-directory))
(current-directory arc-home)
(require "./arc.scm")
(current-directory arc-curdir)
(define (safe-read x)
(arc-eval `(or (safe (coerce ,x 'num)) ,x)))
(define (arc-main . args)
(let* ((repl (or (ar-car? args "-i")
(ar-car? args "--interact")))
(args (if repl (cdr args) args))
(name (ar-car? args))
(args (if name (cdr args) args)))
(current-command-line-arguments (list->vector args))
(if name
(let* ((x (arc-eval `(load ,name)))
(args (map safe-read args)))
(when (procedure? x) (apply x args))
(when repl (interact)))
(interact))))
(apply arc-main (vector->list (current-command-line-arguments)))