May 8, 2001
Revised June 7, 2002
The main issue is that under OCL, predefined Lisp symbols used uppercase letters for their names, and the OCL readers automatically uppercased all non-escaped characters. ACL6, however, uses lowercase letters for the names of predefined symbols, and leaves non-escaped characters in the case in which they appear in the files. Note that all versions of Lisp leave characters within strings in the original case. Therefore, the basic approach is to use symbols instead of names, and to put symbols in lower- or mixed- case. That way, when ACL6 leaves the characters as is, that will be correct, and when OCL uppercases characters, that will be correct also.
(find-package :user)is fine. Use lower-case symbols instead of strings for packages or nicknames. When exporting symbols from an
:exportform within the
defpackageform, use symbols in the keyword package, such as
(:export :foo), or, even better, use uninterned symbols, such as
featureshould be in lowercase. Note a
featureis true, if it is a member of the list
#+allegro (excl:set-case-mode :case-insensitive-upper)
Change lines such as
#+allegro (proclaim '(notinline LAST))
#+allegro (proclaim '(notinline last))
lastis the name of a predefined function.
Leave global variables, such as
*NODES* as is, but check
carefully for consistency in the source code.
If a function is defined with upper case or mixed case, leave it as
is, again checking for consistency.
Very important: Change all occurrences of
t and of
(intern string package) insists on a
string as its first argument. So instead of a form like
"ATNIN" 'snepslog), use
(intern (symbol-name :atnin)
(intern (symbol-name '#:atnin)
Compiler warnings are very helpful in finding uses of predefined function names in the wrong case, and inconsistent use of case in variables.
See also Franz's document section, Allegro CL Case Modes.