ANSI Common Lisp 19 Filenames 19.2 Pathnames 19.2.2 Interpreting Pathname Component Values
18.104.22.168 Restrictions on Constructing Pathnames
When constructing a pathname from components, conforming programs
must follow these rules:
Any component can be nil.
nil in the host might mean a default host
rather than an actual nil in some implementations.
The host, device, directory, name, and type can be strings. There
are implementation-dependent limits on the number and type of
characters in these strings.
The directory can be a list of strings and symbols.
There are implementation-dependent limits on the list's
length and contents.
The version can be :newest.
Any component can be taken
from the corresponding component of another pathname.
When the two pathnames are for different file systems
(in implementations that support multiple file systems),
an appropriate translation occurs.
If no meaningful translation is possible,
an error is signaled.
The definitions of "appropriate" and "meaningful"
An implementation might support other values for some components,
but a portable program cannot use those values.
A conforming program can use implementation-dependent values
but this can make it non-portable;
for example, it might work only with Unix file systems.