You are reading correctly. However, in Haskell 2010, this feature was removed because it was useless. You can specify a restriction in the data type, but all functions should also have the same restriction, so there really is no point. Thus, the function was removed because it was completely useless.
As said, you should just specify the restrictions in the function. However, you should understand that you do not need to specify a restriction for a function that it does not need. In particular, the creation functions need not be limited to a restriction if it is not necessary, because an unlimited function like this is a generalization of a limited version. This applies to functions that take it as an argument, but such a function is much more likely to require limitation.
source share