For example, I’ve seen someone defining a package like so:
(defpackage :foobar
(:use :cl))
instead of:
(defpackage foobar
(:use cl))
Is there any actual difference? Or it’s just a personal preference, and has no effect on the program at all?
That’s about the so-called “modern mode”, where standard Common Lisp symbols internally have lower case names (which violates the Common Lisp standard) and the default readtable case is
:preserve
. In the standard it is:upcase
. Also other predefined symbols have lowercase names.https://franz.com/support/tutorials/casemode-tutorial.htm
Is that incompatible language change used by other implementations?
See CLHS 1.4.1.4.1 Case in Symbols: http://www.lispworks.com/documentation/HyperSpec/Body/01_dada.htm
“As such, case in symbols is not, by default, significant.”
“The symbols that correspond to Common Lisp defined names have uppercase names”
As an aside, I think that every Common Lisp implementation should support a modern mode. The upcasing behaviour of CL — defensible at the time — is in hindsight an easily-fixable mistake.