A few weeks ago (I've been too busy with other stuff to get around to this until now) I was reading a post via planet.plis.org talking about how he sets up new projects and something that I'm unclear about is that he uses #: (I had to look it up) to make un-interned symbols:
Code: Select all
(defpackage #:swatchblade
(:use #:cl)
(:shadowing-import-from #:vecto
#:with-canvas
#:rounded-rectangle
#:set-rgb-fill
#:save-png-stream))
Code: Select all
(defpackage :sqlite
(:use :cl :iter)
(:export :sqlite-error
:sqlite-constraint-error
:sqlite-error-db-handle
:sqlite-error-code
:sqlite-error-message
:sqlite-error-sql
:sqlite-handle
:connect
:set-busy-timeout
:disconnect
:sqlite-statement
:prepare-statement
:finalize-statement
:step-statement
:reset-statement
:clear-statement-bindings
:statement-column-value
:statement-column-names
:statement-bind-parameter-names
:bind-parameter
:execute-non-query
:execute-to-list
:execute-single
:execute-single/named
:execute-one-row-m-v/named
:execute-to-list/named
:execute-non-query/named
:execute-one-row-m-v
:last-insert-rowid
:with-transaction
:with-open-database))
I'm assuming that Zach is doing it this way for a reason.
(Wild speculation) Is using a keyword in an export going to cause the package to put its function inside the symbol in the keyword package? (Which would then mean potential clashes if another package used the same symbol for one of its functions)