[racket] Question about package, library and module

From: Manfred Lotz (manfred.lotz at arcor.de)
Date: Fri Dec 17 15:05:03 EST 2010

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.


Posted on the users mailing list.