매크로와 관련하여 가장 좋은 방법이 무엇인지 이해하는 데 여전히 어려움이 있습니다. 나는 비행 중에 패키지를 정의하는 매크로를 작성하려고 시도하고있다.Common Lisp의 초보자 : 즉석에서 패키지 정의를위한 매크로 질문
(defmacro def-dynamic-package (name)
`(defpackage ,(intern (string-upcase name) "KEYWORD")
(:use :common-lisp)))
이는 등의 표현을 위해 잘 작동 :
(def-dynamic-package "helloworld")
그러나이 같은 뭔가를 비참하게 실패
(defun make-package-from-path (path)
(def-dynamic-package (pathname-name path)))
또는
(defun make-package-from-path (path)
(let ((filename (pathname-path)))
(def-dynamic-package filename)))
내가 이해하는 방법을 가장 기본 매크로는 작동하지만 어떻게 작동합니까? 이걸 구현하면 나를 벗어날 수 있습니다.
아, 이것은 내가 매크로를 디자인 한 문제 중 하나 였는데, defpackage 자체가 매크로 였기 때문에 좋은 접근 방법을 추론하기가 어려웠다. 고마워. – dnolen
사실, 그것은 패키지 패키지를 제공하는 defpackage이다. 유용한 매크로로 기능 :-) –