compile-function
compile-defmacro
compile-defun
- compile-\`
+ #{compile-`}#
compile-quote))
;;; Certain common parameters (like the bindings data structure or
;;; unquote/unquote-splicing/backquote form.
(define (unquote? sym)
- (and (symbol? sym) (eq? sym '\,)))
+ (and (symbol? sym) (eq? sym '#{,}#)))
(define (unquote-splicing? sym)
- (and (symbol? sym) (eq? sym '\,@)))
+ (and (symbol? sym) (eq? sym '#{,@}#)))
;;; Build a call to a primitive procedure nicely.
body))
(make-const loc name)))))))
-(defspecial \` (loc args)
+(defspecial #{`}# (loc args)
(pmatch args
((,val)
(process-backquote loc val))))
;;; routine in our recursive-descent parser.
(define quotation-symbols '((quote . quote)
- (backquote . \`)
- (unquote . \,)
- (unquote-splicing . \,@)))
+ (backquote . #{`}#)
+ (unquote . #{,}#)
+ (unquote-splicing . #{,@}#)))
(define (get-expression lex)
(let* ((token (lex 'get))
(progn (setq depth 10 i depth)
(setq code '(eval 0))
(while (not (zerop i))
- (setq code (\` (eval (quote (1+ (\, code))))))
+ (setq code (#{`}# (eval (quote (1+ (#{,}# code))))))
(setq i (1- i)))
(= (eval code) depth))))
(equal '(1 2 . 3) '(1 2 . 3))))
(pass-if "simple backquote"
- (and (equal (\` 42) 42)
- (equal (\` (1 (a))) '(1 (a)))
- (equal (\` (1 . 2)) '(1 . 2))))
+ (and (equal (#{`}# 42) 42)
+ (equal (#{`}# (1 (a))) '(1 (a)))
+ (equal (#{`}# (1 . 2)) '(1 . 2))))
(pass-if "unquote"
(progn (setq a 42 l '(18 12))
- (and (equal (\` (\, a)) 42)
- (equal (\` (1 a ((\, l)) . (\, a))) '(1 a ((18 12)) . 42)))))
+ (and (equal (#{`}# (#{,}# a)) 42)
+ (equal (#{`}# (1 a ((#{,}# l)) . (#{,}# a))) '(1 a ((18 12)) . 42)))))
(pass-if "unquote splicing"
(progn (setq l '(18 12) empty '())
- (and (equal (\` (\,@ l)) '(18 12))
- (equal (\` (l 2 (3 (\,@ l)) ((\,@ l)) (\,@ l)))
+ (and (equal (#{`}# (#{,@}# l)) '(18 12))
+ (equal (#{`}# (l 2 (3 (#{,@}# l)) ((#{,@}# l)) (#{,@}# l)))
'(l 2 (3 18 12) (18 12) 18 12))
- (equal (\` (1 2 (\,@ empty) 3)) '(1 2 3))))))
+ (equal (#{`}# (1 2 (#{,@}# empty) 3)) '(1 2 3))))))
(and (equal? (parse-str "'(1 2 3 '4)")
'(quote (1 2 3 (quote 4))))
(equal? (parse-str "`(1 2 ,3 ,@a)")
- '(\` (1 2 (\, 3) (\,@ a))))))
+ '(#{`}# (1 2 (#{,}# 3) (#{,@}# a))))))
(pass-if "lists"
(equal? (parse-str "(1 2 (3) () 4 (. 5) (1 2 . (3 4)) (1 . 2) . 42)")