Search code examples
functionoperatorsraku

How to introspect a Raku operator?


I can introspect routines in Raku, for example the say routine:

[5] >  &say.WHAT                                                                                                                                                                   
(Sub)
[6] >  &say.^mro                                                                                                                                                                   
((Sub) (Routine) (Block) (Code) (Any) (Mu))

but how can I introspect an operator such as + (doc page)?

[7] >  &+.WHAT                                                                                                                                                                     
Use of uninitialized value of type Callable in numeric context
  in block <unit> at <unknown file> line 1
  in any <main> at /home/toni/.rakubrew/versions/moar-blead/install/share/perl6/runtime/perl6.moarvm line 1
  in any <entry> at /home/toni/.rakubrew/versions/moar-blead/install/share/perl6/runtime/perl6.moarvm line 1

Use of uninitialized value of type Any in numeric context
  in block <unit> at <unknown file> line 1
  in any <main> at /home/toni/.rakubrew/versions/moar-blead/install/share/perl6/runtime/perl6.moarvm line 1
  in any <entry> at /home/toni/.rakubrew/versions/moar-blead/install/share/perl6/runtime/perl6.moarvm line 1

[7] >  &+.mro                                                                                                                                                                      
No such method 'mro' for invocant of type 'Any'
  in block <unit> at <unknown file> line 1
  in any <main> at /home/toni/.rakubrew/versions/moar-blead/install/share/perl6/runtime/perl6.moarvm line 1
  in any <entry> at /home/toni/.rakubrew/versions/moar-blead/install/share/perl6/runtime/perl6.moarvm line 1

Since in Raku, operators are simply Subs after all and thus it's easy to declare new ones, I think I am doing something wrong but I cannot find out what precisely.


Solution

  • By trial and error this is what I found:

    &infix:<+>.WHAT
    

    This is what was printed:

    (Sub+{is-pure}+{Precedence})