Why only the corresponding procedures for the utf8 and utf16 encoding? For example, in case the implementation has a preferred endianess for multibyte encoding, it makes sense to provide text->utf32 to output the text encoded with that endianess.