Lines must not exceed 99 characters.
Why 99, and not 100, or some other arbitrary number?
Use 4 spaces for indentation, not tabs.
These two rules combined with pattern matching conspire to make me squeeze a lot of code into less than 80 columns. You get a level of indentation from the impl, method, and then the match, already 12 columns gone! And then you add any loops or conditions, and you’ve wasted 20+ columns on whitespace.
We used to use 3 (2?) space indents and I personally prefer that. In OCaml, they use 2 space indents, and often don’t indent some constructs. Our syntactic heritage causes many of the same problems that motivated those decisions. On the other hand, F# (also an ML) uses recommendations much like ours, but without the line length limit.