Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

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
Replies are listed 'Best First'.
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.

    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

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

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (7)
As of 2015-11-26 00:35 GMT
Find Nodes?
    Voting Booth?

    What would be the most significant thing to happen if a rope (or wire) tied the Earth and the Moon together?

    Results (694 votes), past polls