develooper Front page | perl.perl6.language | Postings from May 2001

Re: properties

Thread Previous | Thread Next
From:
Nathan Wiger
Date:
May 21, 2001 12:31
Subject:
Re: properties
Message ID:
20010521123103.H9673@west.sun.com
* Jonathan Scott Duff <duff@cbi.tamucc.edu> [05/21/2001 09:39]:
> 
> If anything, all variables should have a "value" property that evaluates
> to its, well, value and only that property would be considered in
> conditionals.  Then these would be equivalent:
> 
> 	print keys (+$foo).prop;
> 	print keys $foo.value.prop;

Damn, this is really starting to look like JavaScript, and that's just
plain scary. ;-)

I think we should step back and think: Why would we want these to have
separate spaces? Regardless of the syntax, semantically why would you
want to have separate value/variable properties?

The more I've been thinking about it, it seems that properties should
really just be declared as value-dependent or independent. That is, some
are permanent (compiler hints, types, etc) and others change based on
the value assigned to the var (truth, etc).

   # Whatever the syntax is...

   module Dog;

   property barks { ... }       # or "is permanent" ?
   property true is value_dependent { ... }

So if you said:

   my Dog $spot is true, barks = new Terrier;

   $spot = 1;

   print "Spot is alive!" if $spot;        # prints
   print "Spot barks!" if $spot.barks;     # prints

   $spot = 0;

   print "Spot is alive!" if $spot;        # DOES NOT print
   print "Spot barks!" if $spot.barks;     # prints


Really, what you want is some properties to be clobbered by value
assignment, and others to be permanent. That way you get the correct
semantics by just saying:

   if ( $spot.true ) { ... }

Instead of the inevitable:

   if ( $spot.true || $spot.value.true ) { ... }

If they were kept separate.

-Nate


Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About