I'm asking why should [disjoint types] be mandated?
Interesting. The MIT Scheme manual gives essentially the same definitions, yet other sources basically equate reduce and fold; I understood that reduce could rely on the operation being associative.