Tiny quibble that I wouldn’t normally post but I think illustrates the readability issues here:
Should that be “Result set type was expected”, not “list”?
Should that be “Result set type was expected”, not “list”?
means a list whose items are of type Result_set.t.
Also I think the notation X.t is idiomatic for a type defined by module X.
I don't know if you see a real readability issue or not, but I do think it's easy to jump to "hard to read" when that's only true in a certain parochial sense: it's not what we're used to.