Tips for Golfing in Standard ML
Use symbolic identifiers
From The Definition of Standard Ml (revised) [PDF], Section 2.4:

An identifier is either alphanumeric: any sequence of letters,
digits, primes (') and underbars (_) starting with a letter or
prime, or symbolic:  any non-empty sequence of the following symbols:
!  %  &amp;  $  #  +  -  /  :  &lt;  =  &gt;  ?  @  \  ~  ‘  ^  |  * 

In either case, however, reserved words are excluded. This means that for
example # and | are not identifiers, but ## and |=| are identifiers.

The important part (concerning golfing) is that you do not need white space between symbolic identifiers and alphanumeric identifiers or keywords.
Example

fun f a b c=if b then a else c

By replacing f by $ and b by !, we can save 6 bytes:
fun$a!c=if!then a else c

Note, however, that a symbolic identifier needs white space when next to other symbols. That's why we cannot replace a and c in the above example to get to the same byte count:
fun f$b!=if b then$else!    (* syntax error because != is parsed as one token *)