On Tue, Nov 18, 2025 at 9:45 PM ToddAndMargo via perl6-users <perl6- [email protected] <mailto:[email protected]>> wrote:

    Hi All,

    I am a bit confused as to what colon pairs are actually doing:

    [0] > my $y=:abc;
    abc => True
    Why is this True and not Nil?


    [1] > my $y=:abc(123);
    abc => 123
    This I get.


    [2] > my $y=:abc();
    abc => ()
    Why is this () and not Nil?


    [3] > my $y=:abc(Nil);
    abc => Nil
    This I get


    Yours in Confusion,
    -T


On 11/18/25 11:29 PM, Sean McAfee wrote:
It's all spelled out here: https://docs.raku.org/language/ glossary#Adverbial_pair <https://docs.raku.org/language/ glossary#Adverbial_pair>

Notice in particular that :foo means :foo(True) and :!foo means :foo(False).  Also see that

[...] other circumfix operators with their usual semantics can be used for stating the value, e.g. |:foo[…]| for an array and |:foo{…}| for a hash or even a |Block|.

Therefore :foo() means a Pair whose key is the string "foo" and whose value is the empty list.  Compare with :foo(1, 2, 3) which is the same as foo => (1, 2, 3).


Thank you!

So no Nil.  <sniff, sniff> :'(

Reply via email to