Re: RFC 171 (v2) my Dog $spot should call a constructor implicitly

[email protected] (Nathan Wiger)
Newsgroups perl.perl6.language.objects
Message-ID <[email protected]>
> > Besides, what would be the alternative, BEGIN{} - like blocks?
> 
> Such blocks are put forth as an alternative:

Well, remember that BEGIN{} blocks are just subs too, with an optional
'sub'.

But that aside, I don't think a block is what we want to connote. A
block implies "this is evaluated here", not "this is a member method".
That's a sub. Maybe a special sub, like DESTROY, but it's still just a
sub.

> Being able to call these as normal methods may be desirable, or it may not
> be.  Personally, I will likely never call $spot->PREPARE, just as I never
> call tied(%ixhash)->STORE("foo" => "bar"). 

I want to be able to. I call ->STORE and ->DESTROY all the time, because
it's faster than having to go through tie:

   $object = tie %ignoreme, 'Some::Class';
   $object->STORE('key', 'val');
   $object->DESTROY;

> So the object would be left undefined?  That means this code:

No, not at all. Remember, everything's going to inherit from CORE, at
the very least, which would have to provide a CREATE method which just
instantiates a simple object. So, if no Dog::CREATE exists, then $spot
becomes a regular old scalar. I see many many uses for this. For
example, maybe you have a class that you just want to add a STRING sub
to, so it prints out nice. Forcing a CREATE sub to be defined here is a
needless restriction.
 
> However, consider existing tied classes, for example IO::File; it must
> provide duplicate methods, lowercase for users, uppercase for the tied
> interface.  Would it really be less consistent or readable if, say, the
> getline() method was able to be called when a user said either <$fh>, or
> $fh->getline?

I'll soon have an RFC coming up that proposes a way to "fix" this, but
implements it differently. I think you'll like it.

I disagree vehemently that users should be able to name all this stuff.
If they're really bothered by it, that's what typeglobs are for.
Infinite flexibility == Infinite confusion. And I don't think simply
choosing variable and sub names counts as dictating style. So on this
point you and I will have to disagree.

-Nate
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.