On Lisp

今日はあまり時間がなかった。

(define-syntax null!
  (syntax-rules ()
    ((_ a) (set! a '()))))

;; macro を展開
;; gosh> (macroexpand '(null! a))
;; (#<identifier user#set!> a (#<identifier user#quote> ()))


(define-syntax mac
  (syntax-rules ()
    ((_ a) (macroexpand (quote a)))))

;; gosh> (mac (null! a))
;; (#<identifier user#set!> a (#<identifier user#quote> ()))