---
name: "scheme48"
section: "1"
platform: "linux"
package: "scheme48"
version: "1.9.2-4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/scheme48"
---

# scheme48(1)

a Scheme interpreter

## NAME

scheme48 - a Scheme interpreter

## SYNOPSIS

**scheme48** \[-i image\] \[-h heapsize\] \[-a argument\]

## DESCRIPTION

**scheme48** is an implementation of the Scheme programming language as described in the *Revised^5 Report on the Algorithmic Language Scheme.* A runnable system requires two parts, an executable program that implements the Scheme 48 virtual machine, and an image that is used to initialize the store of the virtual machine. **scheme48** is a shell script that starts the virtual machine with an image that runs in a Scheme command loop.

The **scheme48** command loop reads Scheme expressions,  evaluates them, and prints their results. It also executes commands, which are identified by an initial comma character. Type the command *,help* to receive a list of available commands.

The meaning of the **-h** option depends on the type of garbage collector that was chosen at configuration time.  If *heapsize* is a positive number, it specifies the number of words that can be live at any given time. One word is four bytes.  Cons cells are currently 3 words, so if you want to make sure you can allocate, say, a million cons cells, you should specify **-h** 3000000 (actually a little more, to account for the initial heap image and breathing room).

If you specify a maximum smaller than the memory needed to load the image file, the maximum is increased accordingly and a message is written to the console.

For the BIBOP garbage collector,  *heapsize* may be 0.  This means the heap will possibly keep growing until your system runs out of memory. Because of this risk, a warning message is written to the console if you specify **-h** 0.

The  *,dump* and *,build* commands put heap images in files. The  **-i** option causes the initial heap image to be taken from file *image*. The **-a** option causes a list of strings to be passed as the argument to an image generated using the  *,build* command.  The first argument to *,build* is a procedure that is passed the arguments following **-a** and which should return an integer (which is the return value of the Scheme 48 process).

```
     > ,build (lambda (a) (display a) (newline) 0) foo.image
     > ,exit
     $ scheme48 -i foo.image -a mumble
     mumble
     $
```

## FILES

- **/usr/lib/scheme48-1.9.2/scheme48vm**

  the virtual machine.

- **/usr/lib/scheme48-1.9.2/scheme48.image**

  the default image.
