* either decide that this is valid, and just produces an unusable function.
This requires compiling it to some arbitrary code, and would make some
parts of the compiler rather dirty.

* or explicitly say that while variant types with conjunctive types are allowed
in expressions, they are not allowed in patterns. This gives a more
intuitive behaviour, with useful error messages.

I think that the second solution is better, and I have implemented it
in the CVS version, by using a stricter form of unification on pattern types.

However this gives raise to some philosophical questions about what are the
theoretical properties expected when typing patterns, and how this interacts
with the typing of expressions. This change is subject to theory and
implementation improvements.