implement very primitive REPL
This commit is contained in:
24
gem300.rkt
24
gem300.rkt
@@ -41,3 +41,27 @@
|
|||||||
|
|
||||||
[else
|
[else
|
||||||
(values (string->number status) meta)])))))
|
(values (string->number status) meta)])))))
|
||||||
|
|
||||||
|
(define commands
|
||||||
|
(list
|
||||||
|
(cons "default" (lambda (line) (void)))
|
||||||
|
(cons "go" (lambda (line)
|
||||||
|
(request line)))))
|
||||||
|
|
||||||
|
(define (dispatch-command line)
|
||||||
|
(let ([split (string-split line " ")])
|
||||||
|
|
||||||
|
(let ([cmd (assoc (cond [(null? split) "default"]
|
||||||
|
[else (first split)])
|
||||||
|
commands)])
|
||||||
|
(if cmd
|
||||||
|
((cdr cmd) (string-join (cdr split)))
|
||||||
|
(displayln "no such command")))))
|
||||||
|
|
||||||
|
|
||||||
|
(define (repl)
|
||||||
|
(display "G300> ")
|
||||||
|
(dispatch-command (read-line))
|
||||||
|
(repl))
|
||||||
|
|
||||||
|
(repl)
|
||||||
|
Reference in New Issue
Block a user