#lang racket (require (prefix-in net: "net.rkt") (prefix-in gmi: "gmi.rkt")) (define commands (list (cons "default" (lambda (line) (void))))) (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))