[racket] Question about package, library and module
On Fri, 17 Dec 2010 06:20:47 -0700
Matthew Flatt <mflatt at cs.utah.edu> wrote:
> "Library" and "module" are synonyms, more or less, because a library
> is implemented by a module.
>
> A "collection" consists of a set of libraries and sub-collections that
> are normally grouped together into a directory. That is, a collection
> is implemented as a directory. A "collects" directory like
> "~/.racket/5.0.2/collects" holds collections, not libraries or
> modules.
>
> The term "package" is roughly a synonym for "collection", especially
> as distributed via Planet.
>
>
> When a library is installed in a collection, you refer to it using a
> path of collection and sub-collection names followed by a module name.
> As a special case, a top-level collection name can be used as a
> library name, which is just a shorthand for the collection name
> followed by the module name "main".
>
> So,
>
> (require utils)
>
> is a shorthand for
>
> (require utils/main)
>
> Putting "utils.rkt" in a "collects" directory like
> "~/.racket/5.0.2/collects" doesn't work because a single file cannot
> be a collection. Instead, create "utils/main.rkt".
>
Thanks a lot for your explanation. That was really helpful.
I tried to setup a location of my own modules like this
export PLTCOLLECTS=/home/manfred/.racket/mycol
which didn't work but
export PLTCOLLECTS=/home/manfred/.racket/mycol:
did work fine.
The documentation in 17.2 Libraries and Collections says it somehow but
not clearly. Anyway, I figured it out quickly.
--
Manfred