## 1 Getting started

### 1.1 Installation

MLton runs on a variety of platforms and is distributed in both source and binary form. The format for the binary package depends on the platform. The binary package will install under `/usr` or `/usr/local`, depending on the platform. If you install MLton somewhere else, you must set the `lib` variable in the `bin/mlton` script to the directory that contains the libraries (`/usr/lib/mlton` by default).
MLton requires that you have the GNU multiprecision library (GNUmp) installed on your machine. MLton must be able to find both the `gmp.h` include file and the `libgmp.a` or `libgmp.so` library. If you see the error message `gmp.h: No such file or directory`, you should copy `gmp.h` to `usr/lib/mlton/self/include`. If you see the error message `/usr/bin/ld: cannot find -lgmp`, you should add a `-link-opt -L` argument in the `usr/bin/mlton` script so that the linker can find `libgmp`. If, for example, `libgmp.a` is in `/tmp`, then add `-link-opt -L/tmp`.
Installation of MLton creates the following files and directories.

`usr/bin/mllex`
  A lexer generator.
`usr/bin/mlprof`
  A profiler (see Section 7).
`usr/bin/mlton`
  A script to call the compiler. This script may be moved anywhere, however, it makes use of files in `usr/lib/mlton`.
`usr/bin/mlyacc`
  A parser generator.
`usr/share/man/man1/mllex.1, mlprof.1, mlton.1, mlyacc.1`
  Man pages.
`usr/share/doc/mlton`
  Directory containing the user guide for MLton, mllex, and mlyacc, as well as example SML programs (in the `examples` dir), and license information.
`usr/lib/mlton`
  Directory containing libraries and include files needed during compilation.

### 1.2 Hello, World!

Once you have installed MLton, create a file called `hello-world.sml` with the following contents.

    print "Hello, world!\n";

Now create an executable, `hello-world`, with the following command.

    mlton hello-world.sml

You can now run `hello-world` to verify that it works. There are more small examples in
`usr/share/doc/mlton/examples`. In particular, there are examples that demonstrate callcc, heap save and restore, object size primitive, threads, profiling, and the C FFI.