Packages and Libraries A Maple "package" is a collection of related functions. An example of a package is linalg, the Maple linear algebra package. To use a package, you initially read it into memory using the with command: > with(linalg): Warning: new definition for norm Warning: new definition for trace When Maple loads a package, it checks to see whether any of the new function names will replace an existing function. If so, it gives you a warning. For instance, since linalg has a function to compute the trace of a matrix that is called "trace", which is the same name as the debugging command "trace", a warning was generated. The new function is available for use, but the previous function of the same name is no longer accessible. There is a way to avoid this problem if you want access to both functions. The technique will allow you to use a single function of a package without loading the entire package into memory. You use the "long form" to specify the function, libname[funcname](...) where funcname is the function you wish to use, libname is the package it is contained in, and (...) is the argument list. A Maple "library" is a collection of packages. The standard Maple library consists of some internally-defined functions, but most of them reside externally on the file system. When you use the readlib command, Maple reads in the definition for the specified function in much the same way that with works for packages. readlib is particularly useful in situations where you have redefined a standard library function. For example, when the linalg package was loaded in, the standard trace function became unavailable. To get it back, use: > readlib('trace'); proc(fname) ... end