Sum is a datatype that contains one of two (or more, since this type could be used inductively) alternatives in runtime. Sum is a general representation of colimits.