Dimitry Golubovsky wrote:
I'd suggest the following sub-definition for "available" (other name could be "transient"):
A package which is "available" is not "installed" at (immediately known to) a particular developer's system, as opposed to "exposed" and "hidden" which are "installed".
When a package/program is being built that requires a package which is not installed, three options are available:
- a package is located (on the Internet, using Cabal-get or Cabalfind, or manual search), downloaded, and installed (i. e. becomes known to the developer's system), and gets into "exposed" or "hidden" category
- a package is located, downloaded temporarily (i. e. cached) on the developer's system*, used for a particular package that requires it and discarded afterwards (or lives for some time in the cache).**
- package cannot be found (Internet search fails)
This stuff is completely separate, I think. Automatic downloading and installation of packages is handled by the Cabal tools; the compiler is not involved, and the present discussion is just about language and compiler support. Cheers, Simon