【发布时间】:2021-09-18 23:25:25
【问题描述】:
我已经定义了一个包:(defpackage my-package (:use cl) (:export my-function))。当对该包使用in-package 时,in-package 的参数类型应该是什么?
包内名称 => 包
参数和值:
name---一个字符串指示符;未评估。
package---以名字命名的包。
我尝试了以下方法:
-
(in-package my-package)— ✓ -
(in-package :my-package)— ✓ -
(in-package #:my-package)— ✓ -
(in-package "MY-PACKAGE")— ✓
以上所有内容似乎都是有效的。以上有什么区别?我应该使用以上哪个?
另外,我注意到了这一点:
-
(in-package 'my-package)— ✗SBCL 中的错误:
; compiling file "/path/to/my-program.lisp" (written 12 MAR 2021 01:23:45 AM): ; compiling (IN-PACKAGE (QUOTE MY-PACKAGE)) ; file: /path/to/my-program.lisp ; in: IN-PACKAGE 'MY-PACKAGE ; (IN-PACKAGE 'MY-PACKAGE) ; ; caught ERROR: ; (during macroexpansion of (IN-PACKAGE 'MY-PACKAGE)) ; 'MY-PACKAGE is not a string designator
为什么使用关键字或非内部符号是正确的,而不是符号?
【问题讨论】:
标签: common-lisp