Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re^3: [Perl 6] Any provision for a "dereferencing object"?

by w-ber (Hermit)
on May 29, 2007 at 11:00 UTC ( #617941=note: print w/ replies, xml ) Need Help??


in reply to Re^2: [Perl 6] Any provision for a "dereferencing object"?
in thread [Perl 6] Any provision for a "dereferencing object"?

multi sub infix:<at> ($dsc, Code $deref) { $deref($dsc); } my %data = ( foo => [ { quux => 3 }, { bar => { baz => [ 1, 2, 3, 4 ] +}, }, ], ); my $dereferencer = { .<foo>[1]<bar><baz>[3] }; say %data at $dereferencer;

Works in Pugs. Since there doesn't seem to be any good documentation about macros yet, I don't know how to beautify the dereferencer construction syntax, but it ought to be trivial to make a macro that translates deref <foo><bar><baz>[1] to { .<foo><bar><baz>[1] }.

UPDATE: Fixed some blaring typos in the code. Thanks for noting it, blazar. (For some reason, you can't define a Hash in Pugs with

my Hash %foo = ( # something );
At least I get a syntax error with Pugs 6.2.13.)

--
print "Just Another Perl Adept\n";


Comment on Re^3: [Perl 6] Any provision for a "dereferencing object"?
Select or Download Code
Re^4: [Perl 6] Any provision for a "dereferencing object"?
by blazar (Canon) on May 29, 2007 at 11:53 UTC
    $dereferencer = { .<foo>[1]<bar><baz>[3] };

    I knew that "unary" dot acts implicitly on $_, but appearently your code implies that in code written as a bare block $_ is an alias to the first positional argument, and that I didn't know. Actually, without knowing, I would have written the above amongst other possibilities, like:

    $dereferencer = -> $d { $d.<foo>[1]<bar><baz>[3] };

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (3)
As of 2014-11-29 08:43 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My preferred Perl binaries come from:














    Results (204 votes), past polls