Course of Raku / Essentials / Boolean type / Exercises / Triple negation
Solution: Triple negation
The program shown in the task won’t compile and requires a small fix.
Here is the correct and working variant (space added to separate
! and !!):
Code
my $value = False;
say ! !!$value;
🦋 You can find the full code in the file triple-negation.raku.
Output
The program prints an inverted Boolean value as you probably expected:
$ raku triple-negation.raku
TrueComments
It was a bit unexpected that the program with three exclamation marks did not compile:
$ raku triple-negation.raku
===SORRY!=== Error while compiling /Users/ash/raku-course/exercises/booleans/triple-negation.raku
Two terms in a row
at /Users/ash/raku-course/exercises/booleans/triple-negation.raku:2
------> say !!!⏏$value;
expecting any of:
infix
infix stopper
postfix
statement end
statement modifier
statement modifier loopAn additional space solves this problem. But don’t fall into another trap. Consider the following program:
my $value = False;
say !!! $value;
This program compiles but terminates with the following message:
$ raku triple-negation.raku
False
in block <unit> at exercises/booleans/triple-negation.raku line 2This happens because !!! is a special operator for
marking the part of the code as stub code. If the program reaches this
point, it terminates and prints the message, which in our case was the
current value of the variable $value. Refer to 📖 the documentation for more
details.
Course navigation
← Triple negation | Quiz: Boolean values →
Translations of this page: English • Deutsch • Español • Italiano • Latviešu • Nederlands • Български • Русский • Українська