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 Technology! System! Perfect!
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.