A generalised sum type where t stands for the type of constructor "tags".
Each tag has a type parameter x which determines the type of the payload.
A Sigma t value therefore contains a payload whose type is not visible
externally but is revealed when pattern-matching on the tag.
See Two, eitherToSigma and sigmaToEither for an example.