No, I can think of many examples where a contract-based string type can be useful. Enforced character encoding is probably less useful than a subtype devoid of illegal characters, e.g. string(windows_filename), string(xml_cdata), etc. The problem is that none of these strings can be modified without the "type owner" checking them to see if they still conform to the string subtype. Any modification could of course clear the subtype, and Pikes shared strings would act as a subtype cache.