← All programs · Types

Types #9

✓
Raku++ 5.0.0-g312cde8e prints exactly what Rakudo 2026.08 prints

This is valid Raku: Rakudo 2026.08, the reference compiler, runs it without complaint, and the two outputs match character for character.

The program

The first lines compute $value. The last four lines are the same in every program: they print what kind of thing $value is, how it looks as code, as a string, and as true or false.

class Parent { method value { 2 } }
class Child is Parent { method value { callsame() + 7 } }
my $source = Child.new;
my $value = ($source.value, $source ~~ Parent, Child.^mro.map(*.^name).Array);

sub safe-str($v) {
    my $s = try $v.Str;
    $s.defined ?? $s !! '<undefined>'
}

say "TYPE\t" ~ $value.^name;
say "RAKU\t" ~ $value.raku;
say "STR\t" ~ safe-str($value);
say "BOOL\t" ~ $value.Bool;

Run executes the program in your browser, with the Raku++ build this site ships. Edit it and try variations.

What each compiler printed

Rakudo 2026.08Raku++ 5.0.0-g312cde8e
Type .^nameListList
Code form .raku$(9, Bool::True, ["Child", "Parent", "Any", "Mu"])$(9, Bool::True, ["Child", "Parent", "Any", "Mu"])
String .Str9 True Child Parent Any Mu9 True Child Parent Any Mu
True or false .BoolTrueTrue