[snip]Are you looking to create a new type that while technically identical to another type is not considered the same as that type by the type system? - Jonathan M Davis
Yes, This is exactly what I want. I need, for example, that if you pass a Year instance to the Month parameter, generate a compiler error.
-- Yao G.