函数在macrolet中不可见?

时间:2015-04-20 19:06:51

标签: common-lisp sbcl asdf

我有一个ASDF系统,其中包含以下代码:

;; testproj.asd
(asdf:defsystem #:testproj
  :serial t
  :components ((:file "testproj")))

;; testproj.lisp
(defpackage #:testproj
  (:use #:cl))

(in-package #:testproj)

(defun baz (x) x)

(defun bar ()
  (macrolet ((mac ()
           (baz 100)))
    (mac)))

当我尝试加载它时,SBCL有时会抱怨在尝试扩展宏时BAZ功能未定义,但有时却没有。我直接加载testproj.lisp时似乎无法重现这种行为,但我想它并不能证明这一点,因为否则我无法可靠地重现它。我做错了什么并引发了不确定的行为?这是ASDF / SBCL的错误吗?到底是怎么回事? :S

0 个答案:

没有答案