Common Lisp 包定义
我的意思有什么区别
(defpackage #:foo
(:use :cl)
(:export #:bar
#:baz))
(in-package #:foo)
在 Common Lisp 包定义中,和
(defpackage :foo
(:use :cl)
(:export :bar
:baz))
(in-package :foo)
。什么时候必须使用“#”字符?所有这些符号都是不可分割的,对吗?
In Common Lisp package definition, what is the difference between
(defpackage #:foo
(:use :cl)
(:export #:bar
#:baz))
(in-package #:foo)
and
(defpackage :foo
(:use :cl)
(:export :bar
:baz))
(in-package :foo)
I mean. When I have to use the "#" character? All these symbols are uninternerd, right?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
:foo
是关键字符号的语法,#:foo
是未驻留符号的语法。当符号主要用于获取其名称字符串(如defpackage
和in-package
)时,我更喜欢使用未驻留的符号。以下是其他选项:
。您或其他任何人使用哪种风格取决于品味。
:foo
is the syntax for a keyword symbol, and#:foo
is the syntax for an uninterned symbol. When a symbol is used primarily to get at the string that is its name (as indefpackage
andin-package
), I prefer to use uninterned symbols.Here are the other options:
Which style you or anyone else uses is a matter of taste.