Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: [parrot] parrot prototype OO?

by chromatic (Archbishop)
on Feb 05, 2008 at 19:08 UTC ( #666383=note: print w/ replies, xml ) Need Help??


in reply to [parrot] parrot prototype OO?

It's difficult to say what's going on without seeing code, but if I were to do this, I'd write a Prototype PMC in PIR that subclasses the Class PMC and overrides find_method(). You can also override its add_parent() when you clone an instance, so that the new instance can look back to its parent for non-overridden methods.


Comment on Re: [parrot] parrot prototype OO?
Select or Download Code
Re^2: [parrot] parrot prototype OO?
by jepri (Parson) on Feb 06, 2008 at 01:07 UTC
    There's not a lot of code - I was just trying parrot as-is, using only the provided PMCs. Thanks for the tip on PMCs, I wasn't sure if it were possible to write a full PMC in PIR.

    Now that I know rolling my own PMCs is the way to go, I'll go that way. Could you suggest an example of a PMC written in PIR? I'm only finding ones written in C.

    Edit: I just found your FizzBuzz article, working through that now.

    ___________________
    Jeremy
    I didn't believe in evil until I dated it.

Re^2: [parrot] parrot prototype OO?
by jepri (Parson) on Feb 06, 2008 at 03:31 UTC
    Hmmm, find_method seems to be called on the superclass, and not the class (or on the class and not the object). So if I try to use, say, objects, should I return a method that inspects the object (and its parent* slots) and then calls the correct method? Because that sounds like I'm implementing AUTOLOAD.

    Here's my naive code. I don't seem to be making good use of the class machinery so far:

    .namespace [ 'MyStuff'; 'TestProt' ] .sub 'autoload' :method #inspect object and parents here .end .sub 'find_method' :vtable .param pmc arg0 .param pmc arg1 .local pmc autoload new_method = find_name 'autoload' .return(new_method) .end .sub main :main $P1 = new [ 'MyStuff'; 'TestProt'] $P1.hi() .end

    ___________________
    Jeremy
    I didn't believe in evil until I dated it.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://666383]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (17)
As of 2014-07-29 17:46 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (225 votes), past polls