Hacker News new | past | comments | ask | show | jobs | submit login

    my %hash-table = (
      abc => 1,
      def => 2,

    for %hash-table {
      say .key, ' => ', .value;
You can also use sub-signature deparsing.

    for %hash-table -> $ (:$key, :$value) {
      say "$key => $value"
That may take a while to get used to.

You don't have to use it, but it is a very powerful feature so it is definitely worth learning.


Really the most difficult thing seems to be that people aren't expecting Raku to be as consistent as it is. I think that is because most languages aren't.

For example you may expect this to work

    for @array -> $element {
      say $element
but you wouldn't necessarily expect this to work

    if $var.method() -> $result {
      say $result
In fact all keywords of the form `KEYWORD CONDITION {BLOCK}` will work with a pointy block.

You can also create a lambda using the same exact pointy block syntax.

    my &multiply = -> $a, $b { $a * $b }

    say multiply 4, 5; # 20

Also the signature part of a pointy block is exactly the same as a subroutine signature, and a method signature.

You can even create an anonymous signature object.

    :( $foo, $bar )
(There aren't a lot of uses for it though.)


I still get surprised sometimes with how consistent Raku is.

This is a really good explanation, thank you.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact