develooper Front page | perl.perl6.users | Postings from June 2018


Thread Previous
June 14, 2018 20:21
Message ID:
On 06/14/2018 01:13 PM, Trey Harris wrote:
> Just a small stylistic thing to mention:
> On Thu, Jun 14, 2018 at 1:59 AM Todd Chester < 
> <>> wrote:
>     p6
>             if not $dir.IO.d.bool {}
>             for  slice  "\n", $WebStr   ->  $Line { }
>        and on and on and so forth.  I know a lot of them by heart now.
> By |.bool|, I assume you meant |.Bool|, but in any case, it isn’t 
> necessary since the context of a |not| forces it to be boolean.


Exists (directory):
        if not $WorkingDir.IO.d.Bool { mkdir $WorkingDir, 0o766; }

> If you want the opposite—a boolean without the sense-negation, you can 
> use |so|, but in the context of an |if|, it should rarely, if ever, be 
> necessary.
> In the same way that |so| is used to explicitly truthify, unary |+| is 
> used to explicitly numify.
> E.g., once you know that an |IntStr| 
> <> dual value gives a result 
> reminiscent of Perl 5’s string numbers (except that without going to 
> crazy lengths, you can easily supply exactly the number and string you 
> want):
> |my $x =, "The Answer"); my $y =, "Nothing"); 
> for ($x, $y) -> $z { printf "\$z: '%s', so \$z: '%s', +\$z: '%s'\n", $z, 
> so $z, +$z; say " Double it: ", $z * 2; say " or 'double' it: ", $z x 2; } |
> gives results:
> |$z: 'The Answer', so $z: 'True', +$z: '42' Double it: 84 or 'double' it: 
> The AnswerThe Answer $z: 'Nothing', so $z: 'False', +$z: '0' Double it: 
> 0 or 'double' it: NothingNothing |
> In case you’re wondering, you’ll usually have no reason to explicitly 
> construct a dual value like that; you generally get a NumStr or its 
> counterparts like IntStr when reading input or expecting command-line 
> arguments.
> (Also note that the stringification equivalent to |so| and unary |+| is 
> |~|, but it wasn’t necessary above since the |%s| template to |sprintf| 
> forces stringification. Also note that using s/printf at all is not 
> encouraged—but it was useful above, just to make things explicit.)
> ​

Thank you!  Wonderful exposition! I am going to write it down
for later use.

I use "if not" a lot because it is human readable for
me and assists in maintaining the code.

Thread Previous Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About