title: How to make a type with restrictions
body: <p>For example I want to make a type <code>MyType</code> of integer triples. But not just Cartesian product of three Integer, I want the type to represent all (x, y, z) such that <code>x + y + z = 5</code>.</p>
  <p>How do I do that? Except of using just <code>(x, y)</code> since <code>z = 5 - x - y</code>.</p>
  <p>And the same question if I have three constructors <code>A, B, C</code> and the type should be all <code>(A x, B y, C z)</code> such that <code>x + y + z = 5</code>.</p>