i am happy with no as an answer, i am just trying to understand all the details and alternative solutions so that i can pass them on to people interested in pike who are asking about this.
To view this from a more general perspective, Pike offers a limited set of runtime data types: int, float, string, array, mapping, and multiset(*). It doesn't provide a plethora of different integer types like C, just as it doesn't provide a multitude of hash table variants like HashMap, TreeMap, LinkedHashMap, etc in Java. There is only one integer type and one mapping type. They are designed to be reasonably efficient for general use, but you can't modify them for your specific needs.
Since these types are built directly into the language with special syntax (e.g. "([ ])"), special types, special behaviors in operators, etc, they are very convenient to use. That's both positive and negative, the negative side being that you can't add new builtin types without a lot of effort. You can make objects that mimics them in various situations by implementing `+, __hash, etc, but those objects never become quite the real thing, and they'll be slower.
*) program and type are also runtime types, but they aren't data containers in the sense I'm talking about here, and object is a "catch-all" for everything else.