17.3.4 Installing a Language

So far, we have used the reader meta-language to access languages like "literal.rkt" and "dollar-racket.rkt". If you want to use something like #lang literal directly, then you must move "literal.rkt" into a Racket collection named "literal" (see also Adding Collections). Specifically, move "literal.rkt" to "literal/lang/reader.rkt" for any directory name "literal". Then, install the "literal" directory as a package.

After moving the file and installing the package, you can use literal directly after #lang:

#lang literal

See raco: Racket Command-Line Tools for more information on using raco.

You can also package a collection for others to install by using the raco pack command-line tool:

  raco pack --collect literal.plt literal

Then, others can install the "literal" collection using raco setup:

  raco setup -A literal.plt

See PLaneT: Automatic Package Distribution for more information about PLaneT packages.

Another approach is to distribute your language as a PLaneT package. A drawback of using a PLaneT package is that users must type #lang planet followed by a PLaneT path to access the language. The advantages are that the PLaneT package can be installed automatically, it can be versioned, and it co-exists more easily with other packages.