저는 아주 새로운 것입니다. 이것은 매우 어리 석고 명백한 질문 일지 모르지만 일반적으로 lisp에서는 매크로에서 생성 된 코드를 표시 할 수 있습니까?생성 된 코드를 lisp 매크로로 표시
그래서 예를 들어
(defmacro nil! (var)
(list 'setq var nil))
나는 디에고 말했듯이 ... MACROEXPAND-1이 확장 된 코드를
(setq a nil)
저는 아주 새로운 것입니다. 이것은 매우 어리 석고 명백한 질문 일지 모르지만 일반적으로 lisp에서는 매크로에서 생성 된 코드를 표시 할 수 있습니까?생성 된 코드를 lisp 매크로로 표시
그래서 예를 들어
(defmacro nil! (var)
(list 'setq var nil))
나는 디에고 말했듯이 ... MACROEXPAND-1이 확장 된 코드를
(setq a nil)
을 볼 수 있도록하고 싶습니다.
* (macroexpand-1 '(nil! frob))
(SETQ FROB NIL)
T
*
고맙습니다. 나는 단순해야한다고 생각했습니다. –
@DeanSmith : 매크로를 조금 자극 한 후 :'defmacro nil! (var) \'(setf, var nil))'에 다시 써주시길 권합니다. SETF는 SETQ보다 더 일반적이며 일반적으로 더 적절합니다. 준 준결승은 덜 거시적이며 거시 경제학에서 더 일반적입니다. –
'macroexpand' 또는'macroexpand-1'을 사용해보십시오. –