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?