0
いくつかの試行の末、&エラーが発生したため、マクロのマッシュアップをコーディングして、&という値をいくつかの変数(デバッグ用)の値として出力しました。それはうまくいくようですが、これを「専門的に」コードする方法を見たいと思いますか?例えば - (prt A B C)
を呼び出す不都合なマクロの修復
(defmacro prt1 (var)
;Print a single variable and its value.
`(progn (princ (symbol-name ',var)) (princ " = ") (princ ,var) (terpri)))
(defmacro prt (&rest vars)
;Print the values of a number of variable names.
(eval `(append (list 'progn)
(map 'list #'(lambda (x) (list 'prt1 x)) ',vars)
(list (list 'terpri))
(list t)))) ;need to return t
は、現在のバインディング印刷します:
A = 1
B = 2
C = 3
T
ニースライナーを - しかし、うまく動作しませんいくつかのマイナーな修正を試してみました! (defmacroのPRT(&VARSを休ま) "変数の値を出力します。" '(のprogn(フォーマットT "〜%") 、@(VARSにおけるVARのためのループが収集'(PRT1、VAR)) (仕上げ-output t) t)) Extra〜%空間出力は無視され、finish-outputは出力されません。仕事をする唯一の変化はtを返すことです! (私はSBCLにいる) – davypough