Given the example from the documentation, of the `tic-tac-toe` package and "conflicts" (quoted at end of this email), instead, why isn't the norm to do:

    (require tic-tac-toe)

Or, when necessary:

    (require tic-tac-toe/matrix)

Why, when one installs a package named `tic-tac-toe`, would one be referencing modules of the package as `data/matrix`?

I don't recall ever seeing a situation in which I wanted different third-party Racket packages to be stomping over each other's module-naming namespaces.

For people who want to release lots of well-behaved reusable packages, using good practices, with minimal effort and head-scratching, things like this are a problem.

2 Package Concepts

A package is a set of modules in some number of collections. Modules installed using the Racket package manager are required like any other modules. For example, if the package tic-tac-toe contains the module "matrix.rkt" in a "data" collection, then after tic-tac-toe is installed,

    (require data/matrix)
[...]
2.5 Package Conflicts

Two packages are in conflict if they contain the same module. For example, if the package tic-tac-toe contains the module file "data/matrix.rkt" and the package factory-optimize contains the module file "data/matrix.rkt", then tic-tac-toe and factory-optimize are in conflict.

A package may also be in conflict with Racket itself, if it contains a module file that is part of the base Racket implementation. For example, any package that contains "racket/list.rkt" is in conflict with Racket.

For the purposes of conflicts, a module is a file that ends in ".rkt", ".ss", or ".scrbl".

Neil V.

_________________________
 Racket Developers list:
 http://lists.racket-lang.org/dev

Reply via email to