2012-06-05 2 views
2

저는 아주 새로운 것입니다. 이것은 매우 어리 석고 명백한 질문 일지 모르지만 일반적으로 lisp에서는 매크로에서 생성 된 코드를 표시 할 수 있습니까?생성 된 코드를 lisp 매크로로 표시

그래서 예를 들어

(defmacro nil! (var) 
    (list 'setq var nil)) 

나는 디에고 말했듯이 ... MACROEXPAND-1이 확장 된 코드를

(setq a nil) 
+2

'macroexpand' 또는'macroexpand-1'을 사용해보십시오. –

답변

3

을 볼 수 있도록하고 싶습니다.

* (macroexpand-1 '(nil! frob)) 

(SETQ FROB NIL) 
T 
* 
+0

고맙습니다. 나는 단순해야한다고 생각했습니다. –

+0

@DeanSmith : 매크로를 조금 자극 한 후 :'defmacro nil! (var) \'(setf, var nil))'에 다시 써주시길 권합니다. SETF는 SETQ보다 더 일반적이며 일반적으로 더 적절합니다. 준 준결승은 덜 거시적이며 거시 경제학에서 더 일반적입니다. –

관련 문제