The Atom interface evolved to its present form because its functions were the ones that clients used most often. There are other functions and designs that might be useful, which this exercise and those that follow explore. There are several functions to deallocate atoms that extensions to the Atom interface might provide. Implement these functions. Don't forget to specify and implement appropriate checked runtime errors.
Some clients start execution by installing a bunch of strings as atoms for later use.
Copying the strings can be avoided if the client promises not to deallocate them, which is trivially true for string constants.