All~
Speaking of basic PMC types, I remember a bunch of basic array PMCs that were discussed recently, some for each register type, some which autovivified, some which didn't etc. I believe that a stringarray was actually inserted (although currently it just extends perlarray). I currently have a prodigious amount of free time and would be willing to work on such things but am new to the creation of PMCs and am uncertain of the exact desired semantics. If anyone would like to give me a little nudge, I would be more than willing to trudge through much of the grunt work...
Yep, I think we were going for (String|Integer|Float|PMC|BigNum|Boolean)Array classes with a Resizeable variant. The base version should be of fixed size, while the Resizeable version should change size to fit the number of referenced elements. (I don't remember us ever coming up with a better name than Resizeable, so that'll do)
The semantics are simple--the array should store the named things, and stores of other types should autoconvert. Fetches should all convert properly. If you want to get fancy internally right now... cool. If not, that's fine too, we can always get more space-efficient later once we've got things that work.
Dan Sugalski wrote:
Just to let everyone know, I'm going to make a few minor changes to the repository over the next day or so. In addition to what's hopefully a sane example of using morph (which, granted, has a somewhat limited useful range, but...) I'm going to formally establish a basic set of parrot PMC classes. We're going to now have:
Undef - The undefined value. Looks like 0, 0.0, false, or the empty string, depending on how you peer at it. Can transform into any other type. Assignment of an boolean, integer, float, bignum, or string turns it into a PMC of type Boolean, Integer, Float, BigNum, or String.
Boolean - Basic true/false PMC
Integer - Basic integer.
Float - Basic floating point.
BigNum - Basic extended-precision number
String - Basic string
The Boolean, Integer, Float, BigNum, and String types (and yes, BigNum and String don't exist. Yet) maintain their types and autoconvert incoming data, Undef morphs itself to the destination type and goes from there.
These six types will form the basic scalar types for parrot. We'll work on formally defining them, then move on to the aggregate (hash & array) types and the IO & event bits. (And no, I've not forgotten events, IO, or (unfortunately) strings. I'm hoping to overwhelm Leo for when he gets back... :)
-- Dan
--------------------------------------it's like this------------------- Dan Sugalski even samurai [EMAIL PROTECTED] have teddy bears and even teddy bears get drunk