Q: Why is a protoobject considered undef?

Austin Hastings Austin_Hastings at Yahoo.com
Sat Mar 6 14:30:48 UTC 2010


Thanks, Carl.

=Austin



Carl Mäsak wrote:
> Austin (>), Jonathan (>>), Austin (>>>):
>   
>>>> One of the things that has been griping my wagger recently is the fact
>>>> that P6protoobject overrides vtable_defined so that protoobjects are always
>>>> considered undef.
>>>>
>>>> Is there a good reason for this?
>>>>         
>>> Yes; proto-objects are what fill the niche of (typed) undefined values in
>>> Perl 6.
>>>       
>> I have no clue what that means. Can you elaborate?
>>     
>
> When I do...
>
>   my Int $foo;
>
> ...what ends up sitting in the variable $foo is the 'type object' (the
> object formerly known as 'protoobject') Int.
>
> Similarly,
>
>   my $foo;
>
> ...will store an undefined Any type object in $foo.
>
> The utility of type objects being undefined is that that meshes well
> with them being stored in the variables from the beginning. The reason
> we want to store type objects in the variables upon declaration is so
> that we can do things like
>
>   my Dog $fido .= new;
>
> ...which is short for....
>
>   my Dog $fido = Dog.new;
>
> This works exactly because the type object is already in the variable
> when the '.=' is called.
>
> // Carl
>
>   



More information about the parrot-dev mailing list