Running Scheme programs using Racket

Racket can not only run Racket programs (i.e. .rkt files), it can also run Scheme programs without requiring any modifications to the source code. Regular Racket files require the #lang declaration at the beginning of the source file, which is not valid in Scheme. Thankfully, Racket can run Scheme files without requiring the #lang declaration. Here's how to run r5rs and r6rs Scheme programs using Racket.

Racket installations come with the r5rs and r6rs languages by default. An r5rs file may look like this:

 #lang r5rs

(display "Hello")

But the problem is that we do not want to write the #lang line, because that turns the program into a Racket program. To avoid the need to declare the language using #lang, you can run the programs using the -I and --script command line options. For example, racket -I r5rs --script program.scm (or racket -I r5rs -r program.scm for short). The -I option sets the language so that no #lang line is required in the source file. The --script option runs the program.

Typing out the racket command to select the language is tedious, so Racket comes with the plt-r5rs and plt-r6rs executables, which run r5rs Scheme and r6rs Scheme programs respectively. To run an r5rs Scheme program: plt-r5rs program.scm, and to run an r6rs Scheme program: plt-r6rs program.scm.

At the moment, there doesn't seem to be an r7rs language included by default, but there exist third-party modules implementing r7rs-small. This situation may change in the future.