15.1 Pathnames

MIT/GNU Scheme programs need to use names to designate files. The main
difficulty in dealing with names of files is that different file systems
have different naming formats for files. For example, here is a table
of several file systems (actually, operating systems that provide file
systems) and what equivalent file names might look like for each one:

It would be impossible for each program that deals with file names to
know about each different file name format that exists; a new operating
system to which Scheme was ported might use a format different from any
of its predecessors. Therefore, MIT/GNU Scheme provides two ways to
represent file names: filenames (also called namestrings),
which are strings in the implementation-dependent form customary for the
file system, and pathnames, which are special abstract data
objects that represent file names in an implementation-independent way.
Procedures are provided to convert between these two representations,
and all manipulations of files can be expressed in machine-independent
terms by using pathnames.

In order to allow MIT/GNU Scheme programs to operate in a network
environment that may have more than one kind of file system, the
pathname facility allows a file name to specify which file system is to
be used. In this context, each file system is called a host, in
keeping with the usual networking terminology.1

Note that the examples given in this section are specific to unix
pathnames. Pathnames for other operating systems have different
external representations.