如果您将 onlisp 中提供的 aif 代码放在一个包中并尝试在另一个包中使用它,则会遇到 packagename:it 不是外部的问题。
(in-package :packagename)
(defmacro aif (test-form then-form &optional else-form)
‘(let ((it ,test-form))
(if it ,then-form ,else-form)))
通缉调用语法
(in-package :otherpackage)
(aif (do-stuff)
(FORMAT t "~a~%" it)
(FORMAT t "just got nil~%"))
如何在代码中修复此行为,而无需在包声明中将变量设置为外部并且it
只能通过it
而不是访问packagename:it
?