Cómo hacer un tipo con restricciones

Por ejemplo, quiero hacer un tipo MyType de triples enteros. Pero no solo producto cartesiano de tres enteros, quiero que el tipo represente todos (x, y, z) de modo que x + y + z = 5

¿Cómo puedo hacer eso? Excepto de usar solo (x, y) ya que z = 5 - x - y

Y la misma pregunta si tengo tres constructores A, B, C y el tipo debería ser todo (A x, B y, C z) de modo que x + y + z = 5

Respuestas a la pregunta(5)

Su respuesta a la pregunta