OCaml map signatures are really weird when coming from a Java/C++ background. For example, Java's Map<Integer, String> typically becomes string IntMap. I don't yet have any intuition on the different tradeoffs.