develooper Front page | perl.perl6.users | Postings from October 2018

Re: augment again

Thread Previous | Thread Next
From:
Joseph Brenner
Date:
October 19, 2018 19:14
Subject:
Re: augment again
Message ID:
CAFfgvXVcZZQo0uVZ=C4ubVrfb_oH8AQoX+pBH4TMu3hTO7rtFA@mail.gmail.com
Okay, good enough... if I can't slip my changes in ahead of
everything then reinitializing everything viz ^compose sounds
workable.

And so, my next question would be "Can I get a list of all
the built-in classes?"  and I see brian d foy got there
a little over a year ago:

https://stackoverflow.com/questions/44861432/is-there-a-way-to-get-a-list-of-all-known-types-in-a-perl-6-program

The answer from smis suggest I need to be looking in the CORE:: psuedo-package.
Starting from his code snippet, and hacking quite a bit I've got a start on an
elephant gun that recomposes everything in CORE:

  for (|CORE::) .grep({ .key eq .value.^name }) .map( *.value ) -> $class {
    my $class_name = $class.^name;
    try {
        say $class;
        $class.^compose;
        CATCH { default { say "Problem with $class_name"; } }
    }
  }



On 10/19/18, Elizabeth Mattijsen <liz@dijkmat.nl> wrote:
> See also:
> https://stackoverflow.com/questions/52718499/how-to-correctly-augment-any
>
>> On 19 Oct 2018, at 03:52, Joseph Brenner <doomvox@gmail.com> wrote:
>>
>> I've got another question about aug--yes, I know--ment.
>>
>> I've got a module ides_of_augment.pm6:
>>
>>  use MONKEY-TYPING;
>>  augment class Any {
>>      method hiccup {
>>          say "hic!";
>>      }
>>  }
>>
>> I would've thought it could be used in the repl like this:
>>
>>  perl6 -Mides_of_augment
>>
>>> (Any).hiccup
>>  hic!
>>> my @a=< a b c d >;
>>  [a b c d]
>>> @a.hiccup
>>  No such method 'hiccup' for invocant of type 'Array'. Did you mean
>> 'hiccup'?
>>    in block <unit> at <unknown file> line 1
>>
>> As you can see, it kind-of augments the Any class, but evidently
>> does it too late to (completely) change an instance of Array.
>>
>> I tried a few things like "BEGIN augment" or "INIT augment"
>> without any luck.
>>
>> Any suggestions (besides "don't do it")?
>

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About