I don't understand the preference in ML family to use currying so enthusiastically. Eg in the signature of a sort function, I prefer (a,a)->Ord as the comparator function signature, vs a->a->Ord. It's easier to distinguish inputs and outputs. Are there upsides I'm missing?