A language might work for simple and more complex type constraints, but at some point the constraints might become so weird that you really need a full blown turing complete language to define them.
And that point might be sooner than you'd like. Why not instead of using expressions in this constrained language, use something like Haskell?
It's got the super powerful typesystem, and you're certain that it will be able to express any constraint you throw at it.
That said, this language does look nice, and I haven't really tried to find out if there's any obviously important constraints you wouldn't be able to build in it.