 An ML datatype can be thought of as a disjoint union of tuples (or a "sum of products").They are easy to define and easy to program with, in large part because of Standard ML's pattern matching as well as most Standard ML implementations' pattern exhaustiveness checking and pattern redundancy checking.A datatype is defined with the datatype keyword, as in

Order matters in pattern matching