매크로에 전달 된 매개 변수가 평가되는 방법에 대한 의문점이 있습니다. 자세한 내용은 아래를 참조하십시오.매크로 본문에 전달 된 매개 변수의 평가
이 매크로는
(defmacro test-macro (xlist)
`(* ,@xlist))
을 정의하고이 글로벌 변수
(defvar *test-list* '(1 100 2 200))
가된다.
value *TEST-LIST* is not of the expected type LIST.
[Condition of type TYPE-ERROR]
을하지만 기능이로 변경되었을 경우, 목록 (1 100 2 200)
을 반환합니다
(defmacro test-macro (xlist)
`(,@xlist)) ;; removed the * operator
(test-macro *test-list*)
는 *test-list*
이 매크로 (test-macro *test-list*)
에 전달되면이 오류가 반환됩니다.
제 생각에는 ,@xlist
이 첫 번째 경우에 평가되지 않는 것입니다. 즉 *
연산자가 적용될 때입니다. 어떤 도움을 주셔서 감사합니다.
많은 감사. 매크로 엑스 팬드는 매우 유용합니다 .. – 5Fists
@ 5fists 슬라임에 macroexpand 단축키가 있습니다. 그것, 1 슬림을위한 –