Raku

1 program Added 2025-10-22T09:41:09Z Model: anthropic/claude-3.5-sonnetTemp: 0.4 Evidence Report issue View issues
Aliases: Perl 6, Rakudo, Raku (programming language), perl6, pl6, raku
Provenance: commit fe023e83ce · authored 2025-10-22T11:41:09+02:00 · model anthropic/claude-3.5-sonnet

Merged records (3)

Sources describe this language in separate records, kept as they are. They were joined by explicit decisions in data/curated/pl_links.csv (concept concept/repo/Raku); names of merged pages are listed as aliases above.

Sources mentioning this language

8 sources · pl_id: pl/raku
LLM (this repo) · 1PldbLinguistPygmentsWikipediaHyperpolyglotRosettacodeWikidata · Q2052676

Wikipedia infobox ↗

Pulled from the wikimedia/structured-wikipedia snapshot — see data/raw/wikipedia_pl_facts.*.jsonl and pl_fact.csv for the long-table provenance.

Paradigmsmulti-paradigm
Typingdynamic, gradual
Designed byRaku community · Larry Wall
First appeared2015
Influenced byPerl · Ruby · Smalltalk · Haskell · JavaScript
LicenseGNU General Public or Artistic 2
Homepagehttps://raku.org/

Extensions claimed by this language

34 claims. Each row is one upstream assertion with its strength. SWH column shows file occurrences with that extension across the entire archive.
ExtensionSourceStrengthSWH
.6pllinguistprimary10 files
.plpygmentsprimary6.3M files
.rakuwikidataprimary44.6K files
.rakudocwikidataprimary5.2K files
.rakumodwikidataprimary56.2K files
.rakutestwikidataprimary11.7K files
.twikidataprimary3.1M files
.6plpygmentssecondary10 files
.6pmlinguistsecondary4 files
.6pmpygmentssecondary4 files
.nqplinguistsecondary23.2K files
.nqppygmentssecondary23.2K files
.p6linguistsecondary28.8K files
.p6pygmentssecondary28.8K files
.p6llinguistsecondary2 files
.p6lpygmentssecondary2 files
.p6mlinguistsecondary6 files
.p6mpygmentssecondary6 files
.pllinguistsecondary6.3M files
.pl6linguistsecondary13.6K files
.pl6pygmentssecondary13.6K files
.pmlinguistsecondary11.0M files
.pmpygmentssecondary11.0M files
.pm6linguistsecondary139.3K files
.pm6pygmentssecondary139.3K files
.rakulinguistsecondary44.6K files
.rakupygmentssecondary44.6K files
.rakudocpygmentssecondary5.2K files
.rakumodlinguistsecondary56.2K files
.rakumodpygmentssecondary56.2K files
.rakutestpygmentssecondary11.7K files
.tlinguistsecondary3.1M files
.tpygmentssecondary3.1M files
.nqpwikipediaproposed23.2K files

Related languages

Perl 6 (0.58)Perl6 (0.50)Perl (0.18)XS (0.15)ePerl (0.13)

Real programs from Software Heritage

No SWH evidence indexed yet for this language. (Either the SWH mining hasn't reached this language's extensions, or no matching files exist in the archive.)

Programs collected by LLM agents experimental · unverified

Gathered by LLM agents during the experiment that started this catalogue. They are not verified: the agent names an origin, but a program can be altered or invented — an audit found one attributed to a file that does not exist, in a syntax the language does not have. Prefer the programs archived by Software Heritage above. The catalogue's goal is the languages themselves, grounded in sources (PLDB, Wikipedia, Rosetta Code, …), with real archived programs; these examples may be dropped.

Wordle Solver

Provenance: commit fe023e83ce · authored 2025-10-22T11:41:09+02:00 · model anthropic/claude-3.5-sonnet · Temp 0.4
code.raku · license: Artistic-2.0 · added: 2025-10-22T09:41:09Z
#!/usr/bin/env raku
unit sub MAIN ($word? is copy);
my @words = 'share/dict'.IO.lines.grep(/^<[a..z]>**5$/); 
my @possible = @words;
my $try = 1;
while @possible > 1 {
    my $guess = $try == 1 ?? 'stare' !! smart-guess(@possible);
    my $result;
    with $word {
        $result = compare($word, $guess);
        say "$guess -> $result";
    }
    else {
        say "Try $try: $guess";
        $result = prompt 'Result: ';
        last if $result eq 'done';
    }
    @possible = filter-words(@possible, $guess, $result);
    $try++;
}
say @possible[0] if @possible == 1;
sub smart-guess(@words) {
    @words.sort(*.comb.unique.elems).[*-1]
}
sub compare($word, $guess) {
    my @result;
    my @word = $word.comb;
    my @guess = $guess.comb;
    for ^5 -> $i {
        if @word[$i] eq @guess[$i] {
            @result[$i] = '+';
            @word[$i] = @guess[$i] = Nil;
        }
    }
    for ^5 -> $i {
        next unless @guess[$i];
        if (my $j = @word.first(@guess[$i], :k)) {
            @result[$i] = '?';
            @word[$j] = Nil;
        }
        else {
            @result[$i] = '-';
        }
    }
    @result.join
}
sub filter-words(@words, $guess, $result) {
    my @guess = $guess.comb;
    my @result = $result.comb;
    my %must-have;
    my %must-not-have;
    my %exact;
    for ^5 -> $i {
        given @result[$i] {
            when '+' {
                %exact{$i} = @guess[$i];
                %must-have{@guess[$i]}++;
            }
            when '?' {
                %must-have{@guess[$i]}++;
                %must-not-have{$i}{@guess[$i]} = 1;
            }
            when '-' {
                %must-not-have<all>{@guess[$i]} = 1;
            }
        }
    }
    return @words.grep: -> $word {
        my @word = $word.comb;
        next False if %exact.first: -> $p {
            @word[$p.key] ne $p.value;
        };
        next False if %must-not-have.first: -> $p {
            $p.key eq 'all'
                ?? $word.contains($p.value.any)
                !! @word[$p.key] eq $p.value.any;
        };
        next False if %must-have.first: -> $p {
            $word.comb.grep($p.key) != $p.value;
        };
        True;
    };
}

Disambiguation rules

Linguist heuristic rules that predict this language when one of its claimed extensions is shared with another.
RuleExtKindPredicates (truncated)
h/linguist/.pl/2.plpredicates[{"kind": "any", "regexes": ["^\\s*(?:use\\s+v6\\b|\\bmodule\\b|\\b(?:my\\s+)?class\\b)"]}]
h/linguist/.t/1.tpredicates[{"kind": "any", "regexes": ["^\\s*(?:use\\s+v6\\b|\\bmodule\\b|\\bmy\\s+class\\b)"]}]
h/linguist/.pm/1.pmpredicates[{"kind": "any", "regexes": ["^\\s*(?:use\\s+v6\\b|\\bmodule\\b|\\b(?:my\\s+)?class\\b)"]}]

Contribute — propose a file extension

Tell us where to find evidence about Raku (mapped to pl/raku). A reference URL is required; at least one of extension or program code must be provided too. A maintainer reviews each submission via a draft PR before anything lands.
Optional: attach a program from that URL
If the reference URL points at a single source file you'd like to add as an example program, paste it below. The workflow will write it under languages/Raku/programs/<sha>/. Keep under ~200 lines.
(or open the pre-filled issue directly)
← RAISE rakudo →