Common Lisp包定义

时间:2011-11-08 12:10:37

标签: package common-lisp

在Common Lisp包定义中,

之间有什么区别
(defpackage #:foo
    (:use :cl)
    (:export #:bar
        #:baz))

(in-package #:foo)

(defpackage :foo
    (:use :cl)
    (:export :bar
       :baz))

(in-package :foo)
我的意思是。当我必须使用“#”字符?所有这些符号都是不受干扰的,对吧?

1 个答案:

答案 0 :(得分:10)

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

以下是其他选项:

  • 使用关键字符号;我不喜欢这种实习关键字符号如何出现在apropos和其他地方
  • 使用字符串;我不喜欢这样无偿地打破了Allegro的“现代”模式
  • 使用普通符号;我不喜欢这个内容如何实现一个符号,以及它如何在一个可能随机的包中实现它

或其他任何人使用的风格都是品味问题。