Sorry, that I excavate that thread, but it just fits my question.
Rod Adams wrote:
Well, "and" and "or" serve the purpose of being at a much lower
precedence level than "&&" and "||".
I would see the value in alphabetic "not" as serving the same relation
to "!". But I would still see it returning a Bool, not a numified 0 or
1. I could see a "boolean" operator serving the same relation to "?".
The question is: are ?, !, not and true returning values besides the
boolean evaluation? Something like 'value but true'? To wit:
my $a = 4;
my $b = 0;
say 'true' if $a; # prints 'true'
say $a && $b; # prints '4'
say ($a and $b); # same, parens needed for precedence
say 'true' if not $b; # prints 'true'
say not $a; # prints 0, or '4 but false'
say $b || not $a; # prints '4 but false'
say $b || !$a; # prints '4 but false'
say bit $a; # prints '0' or 'false'
say bool $a; # print '4 but true'
But for those cases where someone absolutely has to have a 1 or 0, not
some Boolean object, sticking a "+" or "int" in front of a "!", "?",
"not", or "boolean" seems to cover that case fine.
Boolean return values are the task of unary ?^, aren't they? Continuing
from above +?$a would still be 4 not bit::true, right? Even ~+?*+?$a is
as far as the value is concerned a no-op? Thus to really flatten away the
value one needs to use ?^ which has bit as the alpha pendant?
If my above assumptions are correct I would like to get bool as the
alpha pendant to ? like not for !. BTW are num and str the equivalents
of + and ~ respectively? And - has no corresponding neg or so? The strings
'true' and 'false' should really be kept as enums of the bit type.
Thanks for your patience with me.
TSa (Thomas Sandla▀)