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 package depends on the
platform. The binary package is designed to be installed in the root
directory. It may install in /usr or /usr/local,
depending on the platform. If you do not install MLton in the root
directory, you must set the lib variable in usr/bin/mlton 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, for example, -link-opt -L/usr/lib.
Installation of MLton creates the following files and directories.
- usr/bin/mllex
-
A lexer generator.
- usr/bin/mlprof
-
A profiler (see Section 6).
- 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.