---
name: "sml"
section: "1"
platform: "linux"
package: "smlnj"
version: "110.99.9-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/sml"
---

# sml(1)

the interactive Standard ML of New Jersey system

## NAME

sml - the interactive Standard ML of New Jersey system

## SYNOPSIS

**sml** \[*SML-OPTIONS*\] \[*OPTIONS*\] \[*FILES*\]

## DESCRIPTION

**Standard ML of New Jersey** is an incremental, interactive compiler that accepts **SML** declarations and expressions to be evaluated from standard input.

## OPTIONS

- **-32**

  run the 32-bit version of the SML/NJ system (currently the default).

- **-64**

  run the 64-bit version of the SML/NJ system.  This option only applies to the **x86-64** (aka **amd64**) architecture.

**@SMLwordsize**

echo the wordsize (*i.e.*, either `32` or `64`) of the system to standard output and then exit.  (This option was added in version 110.97).

**@SMLversion**

echo the command name and SML/NJ version (*e.g.*, "`sml 110.99.9`") to standard output and then exit.

**@SMLload**=*IMAGE*

specifies the name of the heap-image file to load.  The heap suffix can be omitted as long as there there is not a file of the same name.

**@SMLcmdname**=*NAME*

set the command name; this is the value returned by `CommandLine.name()`.

**@SMLsuffix**

echo the heap suffix for the system to standard output and then exit

**@SMLalloc**=*SIZE*

Specify the prefered size of the allocation area

**@SMLrun**=*RUNTIME*

specifies runtime system

**@SMLquiet**

load heap image silently (default)

**@SMLverbose**

show heap image load progress

**@SMLobjects**

show list of executable objects

**@SMLdebug**=*FILE*

write debugging info to file

- **-C***ctl*=*value*

  set the control *ctl* to *value*.

- **-D***name*=*value*

  define the CM variable *name* to have the given value.

**-D**'name

define the CM variable *name* to have the value 1.

- **-U***name*

  remove any definition of the CM variable *name*.

- **-H**

  produce complete help listing

- **-h**

  produce minimal help listing

- **-h***level*

  help with obscurity limit

- **-S**

  list all the controls along with their default value

- **-s***level*

  print a limited list of settings. The number of levels of the control heirarchy is controled by *level*, with 0 printing just the root of the heirarchy.

- **-E**

  list all the controls along with their corresponding environment variables

- **-e***level*

  print a limited list of environment variables; The number of levels of the control heirarchy is controled by *level*, with 0 printing just the root of the heirarchy.

- **-m**

  switch to CM.make

- **-a**

  switch to CM.autoload; default

*file.cm*

run `CM.make` or `CM.autoload` on *file.cm* and then return to the SML prompt. Which command is run is determined by the **-m** and **-a** flags.

*file.sig*

execute `use` *file.sig* before entering the SML top-level loop.

*file.sml*

(use) execute `use` *file.sml* before entering the SML top-level loop.

*file.fun*

(use) execute `use` *file.fun* before entering the SML top-level loop.

## AUTHOR

[sml(1)](/sml/1.md) was originally created by Andrew Appel and David MacQueen in 1987. The system is currently maintained by Matthias Blume, David MacQueen, and John Reppy.

## SEE-ALSO

[smlnj(7)](/smlnj/7.md)

*Standard ML of New Jersey website \<https://smlnj.org\>*

## COPYING

*Copyright © 2020 The Fellowship of SML/NJ*

*This is free software; see the source for copying  conditions.   There  is  NO* *warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.*
