Common Lisp 包定义

发布于 2024-12-14 01:47:57 字数 309 浏览 0 评论 0原文

我的意思有什么区别

(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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

深海少女心 2024-12-21 01:47:57

:foo 是关键字符号的语法,#:foo 是未驻留符号的语法。当符号主要用于获取其名称字符串(如 defpackagein-package)时,我更喜欢使用未驻留的符号。

以下是其他选项:

  • 使用关键字符号;我不喜欢出现在 apropos 和其他地方的实习生关键字符号如何
  • 使用字符串;我不喜欢
  • 使用简单的符号无端破坏 Allegro 的“现代”模式;我不喜欢它如何实习一个符号,以及如何将其实习在一个潜在的随机包中

。您或其他任何人使用哪种风格取决于品味。

: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 in defpackage and in-package), I prefer to use uninterned symbols.

Here are the other options:

  • use a keyword symbol; I don't like how this interns keyword symbols that show up in apropos and other places
  • use a string; I don't like how this gratuitously breaks Allegro's "modern" mode
  • use a plain symbol; I don't like how this both interns a symbol, and how it interns it in a potentially random package

Which style you or anyone else uses is a matter of taste.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文