At 03:43 PM 02-13-2002 +0000, Dave Mitchell you wrote: >Dan Sugalski <[EMAIL PROTECTED]> wrote: > > >So in the following: > > > > > >my Complex $c = 3+4i; > > >my $plain = 1.1; > > >$plain = $c; > > > > > >I presume that $plain ends up as type Complex (with value 3+4i)? > > > > Yup. > > > > >If so, how does $plain know how to "morph itself into the RHS's type"? > > > > The general rule is: If a PMC is not a fixed type, it tosses its > > contents and becomes whatever's assigned to it. If it is a fixed > > type, it extracts what it can as best it can from the source and uses > > that. > >Thanks. >I just want to assert/clarify that the job of "becoming whatever's >assigned to it" is delegated to the src PMC, since $plain won't itself know >how to do this?
I assumed that the logic for assigning PMC to PMC would be something like: if (destPMC is specified as typeX) { if (srcPMC ISA typeX) { destPMC <- srcPMC } else { destPMC <- typeX.convert(srcPMC); } } else { destPMC <- srcPMC } in pseudocode form. If we assume that there is a universal "root" type such that all PMC's are ISA typeRoot, and that typeX.convert(PMCofTypeY) is trivial if typeY ISA typeX, then this simplifies to destPMC <- destPCM.declaredtype.convert(srcPMC); Why does that look too simple?