> : but it confuses me. Does that mean you're leaning more toward
> : allowing undeclared properties, or just that you're still trying
> : to give both sides of the argument thorough consideration?
> 
> I'm not doing either of those things...  :-)

Yayy! :)

> : Just for my vote, I want to be able to declare new properties, but
> : would rather not be able to accidentally set $o.ture.
> 
> That's how it works.

Ok. So are we sticking with the

  our property *foo;

syntax?

And does that mean property is a type? ~smirk~

> :   if $me.flying {
> :      $me.drunk     = "scotch";      # inebriation source
> :      $me.dunk      = true;          # I do when I can
> :      $scotch.dunk  = "fig newton";  # the only acceptable value!
> :      $newton.dunk  = true;          # only way I eat 'em
> :      $scotch.drunk = true;          # oops, it's all gone :(
> :   }
> : . . . .
> 
> None of those are legal if the object doesn't have the property yet.
> Only C<but> has the power to add roles at run time.

Which works as well for objects of class Foo as for undef. Ok.
But it only works if the property/role being added is one the compiler
already knows, in which case it just "promotes" the object to a new
pseudo-class with the new property. Yes?

> . . . .
> : That's beautiful, and very sensible. Where can I read up on roles a
> : little more?
> 
> Well, it's not nearly as general as we're making it, but the
> inspiration for it comes in part from the "Traits" paper:
> 
>     http://www.cse.ogi.edu/~black/publications/TR_CSE_02-012.pdf

This box isn't well configured, so I forwarded this to work. I'll see
it Monday.
 
> Basically, I'm attempting to take their concept and unify it with
> properties, interfaces, generics, aspects, and mixins.  Among other
> things...

You have a talent for designing Swiss Army Knives. :)
 
> : But I thought properties *were* attributes, basically....
> 
> We're using "attributes" to mean instance variables defined by the
> class.  Properties used to be considered something else, but now this
> role-playing I'm talking about makes them more like real attributes
> that happen to be added at run time.  Except it doesn't modify any
> named class to do so, but only the anonymous class associated with
> the object in question.  (And if there isn't an anonymous class yet,
> it generates one.)

Wrapper-classes?
 
> : Hrmm. So properties are "object" attributes unrelated to class?
> 
> Unrelated to the original named class.

On that note, just for curiosity -- does undef have a class?

> . . . .
> :   our property *zippy;
> : 
> : would probably be a bit foolish, since there can be only one such,
> : and trying to redeclare it by loading two modules with that in them
> : would crash, but wouldn't storing the context of a property by like
> : recursively giving the properties some properties of their own? Is
> : that a can of worms we really want to open?
> 
> I don't see what the problem is.  Once anyone has declared *zippy,
> everyone has a global zippy, and it's the same global zippy
> everywhere.  You only get separate zippys if in more than one place
> you say things like:
> 
>     our property zippy;
>     my property zippy;

I was just saying that the compiler would bail if you said

  module Foo { our property *zippy; }
  module Bar { our property *zippy; }

( Hmm... I think I need to reread the rule on semicolons. :)
 
> Either of those declarations may be exported, however, in which case
> the importing modules shares the zippy, just as it would share an
> exported variable.

Ok, exported as in the Exporter module.

> . . . .
> : All I've seen on interfaces is a few lines in passing. Anyone got a
> : reference where I can RTFM and thin the spam to the list? :)
> 
> Don't have a doc, but see Java for an example.  Basically it's a
> clunky way of sneaking a little bit of multiple inheritance into a
> language that only supports single inheritance.
> 
> Larry


Ok, if Java interfaces will do as an example/template, I understand,
and I *LIKE* it. In fact, I like it much better than Java (but then, I
always have. ;o)

__________________________________
Do you Yahoo!?
Free Pop-Up Blocker - Get it now
http://companion.yahoo.com/

Reply via email to