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...
Matt
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... :)