You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
#lang br
|
|
|
|
(require "struct.rkt" "expr.rkt")
|
|
|
|
(provide b-rem b-print b-let b-input b-repl b-require)
|
|
|
|
|
|
|
|
(define (b-rem val) (void))
|
|
|
|
|
|
|
|
(define (b-print . vals)
|
|
|
|
(displayln (string-append* (map ~a vals))))
|
|
|
|
|
|
|
|
(define-macro (b-let ID VAL) #'(set! ID VAL))
|
|
|
|
|
|
|
|
(define-macro (b-input ID)
|
|
|
|
#'(b-let ID (let* ([str (read-line)]
|
|
|
|
[num (string->number (string-trim str))])
|
|
|
|
(or num str))))
|
|
|
|
|
|
|
|
(define-macro (b-repl . ARGS)
|
|
|
|
(with-pattern ([STMTS (pattern-case-filter #'ARGS
|
|
|
|
[(b-expr . EXPR-ARGS) #'(b-print (b-expr . EXPR-ARGS))]
|
|
|
|
[OTHER-STMT #'OTHER-STMT])])
|
|
|
|
#'(begin . STMTS)))
|
|
|
|
|
|
|
|
(define-macro (b-require ID) #'(void))
|