Raku language preview
1. A class with accessors
twigils, the is rw trait, and a declarator doc
horizon-dark
#| doubles a number
sub double(Int $x) {
return $x * 2;
}
my $name = "world";
say "Hello, $name!";
class Point {
has $.x is rw;
has $.y is rw;
}
my $p = Point.new(x => 1, y => 2);
say $p.x ~~ $p.y;
atom-one-dark
#| doubles a number
sub double(Int $x) {
return $x * 2;
}
my $name = "world";
say "Hello, $name!";
class Point {
has $.x is rw;
has $.y is rw;
}
my $p = Point.new(x => 1, y => 2);
say $p.x ~~ $p.y;
github-dark
#| doubles a number
sub double(Int $x) {
return $x * 2;
}
my $name = "world";
say "Hello, $name!";
class Point {
has $.x is rw;
has $.y is rw;
}
my $p = Point.new(x => 1, y => 2);
say $p.x ~~ $p.y;
dracula
#| doubles a number
sub double(Int $x) {
return $x * 2;
}
my $name = "world";
say "Hello, $name!";
class Point {
has $.x is rw;
has $.y is rw;
}
my $p = Point.new(x => 1, y => 2);
say $p.x ~~ $p.y;
nord
#| doubles a number
sub double(Int $x) {
return $x * 2;
}
my $name = "world";
say "Hello, $name!";
class Point {
has $.x is rw;
has $.y is rw;
}
my $p = Point.new(x => 1, y => 2);
say $p.x ~~ $p.y;
github
#| doubles a number
sub double(Int $x) {
return $x * 2;
}
my $name = "world";
say "Hello, $name!";
class Point {
has $.x is rw;
has $.y is rw;
}
my $p = Point.new(x => 1, y => 2);
say $p.x ~~ $p.y;
2. Grammar and tokens
the grammar, token, and rule keywords
horizon-dark
grammar Calculator {
token TOP { <expr> }
rule expr { <num> '+' <num> }
token num { \d+ }
} atom-one-dark
grammar Calculator {
token TOP { <expr> }
rule expr { <num> '+' <num> }
token num { \d+ }
} github-dark
grammar Calculator {
token TOP { <expr> }
rule expr { <num> '+' <num> }
token num { \d+ }
} dracula
grammar Calculator {
token TOP { <expr> }
rule expr { <num> '+' <num> }
token num { \d+ }
} nord
grammar Calculator {
token TOP { <expr> }
rule expr { <num> '+' <num> }
token num { \d+ }
} github
grammar Calculator {
token TOP { <expr> }
rule expr { <num> '+' <num> }
token num { \d+ }
} 3. Multi dispatch
multi and proto subs
horizon-dark
proto sub area(|) {*}
multi sub area(Num $r) { pi * $r ** 2 }
multi sub area(Num $w, Num $h) { $w * $h } atom-one-dark
proto sub area(|) {*}
multi sub area(Num $r) { pi * $r ** 2 }
multi sub area(Num $w, Num $h) { $w * $h } github-dark
proto sub area(|) {*}
multi sub area(Num $r) { pi * $r ** 2 }
multi sub area(Num $w, Num $h) { $w * $h } dracula
proto sub area(|) {*}
multi sub area(Num $r) { pi * $r ** 2 }
multi sub area(Num $w, Num $h) { $w * $h } nord
proto sub area(|) {*}
multi sub area(Num $r) { pi * $r ** 2 }
multi sub area(Num $w, Num $h) { $w * $h } github
proto sub area(|) {*}
multi sub area(Num $r) { pi * $r ** 2 }
multi sub area(Num $w, Num $h) { $w * $h }