42 lines
824 B
Racket
42 lines
824 B
Racket
#lang racket/base
|
|
|
|
(require racket/string
|
|
"utils.rkt"
|
|
)
|
|
(provide symbol??
|
|
symstr
|
|
symstr-eval
|
|
is-if?)
|
|
|
|
|
|
(define (symbol?? a)
|
|
(let ((r (symbol? a)))
|
|
r))
|
|
|
|
(define (symstr x)
|
|
(cond
|
|
((list? x)
|
|
(string-append "[ "
|
|
(string-join (map symstr-eval x) ", ")
|
|
" ]"))
|
|
((vector? x)
|
|
(symstr (vector->list x)))
|
|
(else
|
|
(let ((r (format "~a" x)))
|
|
(let ((r* (if (string-prefix? r "(quote")
|
|
(let ((s (substring r 7)))
|
|
(substring s 0 (- (string-length s) 1)))
|
|
r)))
|
|
r*)))
|
|
)
|
|
)
|
|
|
|
|
|
(define (symstr-eval x)
|
|
(cond
|
|
((string? x) (format "\"~a\"" (esc-double-quote x)))
|
|
(else (symstr x))))
|
|
|
|
(define (is-if? x)
|
|
(displayln x)
|
|
(eq? x 'if)) |