Exponentiation with infix operators in (or operating on) the base: Difference between revisions
Content added Content deleted
Langurmonkey (talk | contribs) (added langur language example) |
SqrtNegInf (talk | contribs) (→{{header|Raku}}: re-write without EVAL, works in recent releases of Raku) |
||
Line 768: | Line 768: | ||
sub infix:<∧> is looser(&infix:<->) { $^a ** $^b } |
sub infix:<∧> is looser(&infix:<->) { $^a ** $^b } |
||
for |
|||
use MONKEY; |
|||
⚫ | |||
⚫ | |||
'(1 + -$x)**$p', {(1 + -$^a)**$^b}, '1 + -($x**$p)', {1 + -($^a**$^b)}), |
|||
("\nEasily modified: custom loose infix exponentiation is looser (lower) precedence than unary negation.", |
|||
'1 + -$x↑$p ', {1 + -$^a↑$^b}, '1 + (-$x)↑$p ', {1 + (-$^a)↑$^b}, '1 + (-($x)↑$p) ', {1 + (-($^a)↑$^b)}, |
|||
'(1 + -$x)↑$p ', {(1 + -$^a)↑$^b}, '1 + -($x↑$p) ', {1 + -($^a↑$^b)}), |
|||
("\nEven more so: custom looser infix exponentiation is looser (lower) precedence than infix subtraction.", |
|||
'1 + -$x∧$p ', {1 + -$^a∧$^b}, '1 + (-$x)∧$p ', {1 + (-$^a)∧$^b}, '1 + (-($x)∧$p) ', {1 + (-($^a)∧$^b)}, |
|||
'(1 + -$x)∧$p ', {(1 + -$^a)∧$^b}, '1 + -($x∧$p) ', {1 + -($^a∧$^b)}) |
|||
-> $case { |
|||
⚫ | |||
my ($title, @operations) = $case<>; |
|||
⚫ | |||
say $title; |
|||
say $message; |
|||
for -5, 5 X 2, 3 -> ($x, $p) { |
for -5, 5 X 2, 3 -> ($x, $p) { |
||
printf "x = %2d p = %d", $x, $p; |
printf "x = %2d p = %d", $x, $p; |
||
-> $ |
for @operations -> $label, &code { print " │ $label = " ~ $x.&code($p).fmt('%4d') } |
||
say '' |
|||
} |
} |
||
}</syntaxhighlight> |
}</syntaxhighlight> |
||
Line 799: | Line 802: | ||
x = 5 p = 3 │ 1 + -$x↑$p = -124 │ 1 + (-$x)↑$p = -124 │ 1 + (-($x)↑$p) = -124 │ (1 + -$x)↑$p = -64 │ 1 + -($x↑$p) = -124 |
x = 5 p = 3 │ 1 + -$x↑$p = -124 │ 1 + (-$x)↑$p = -124 │ 1 + (-($x)↑$p) = -124 │ (1 + -$x)↑$p = -64 │ 1 + -($x↑$p) = -124 |
||
Even |
Even more so: custom looser infix exponentiation is looser (lower) precedence than infix subtraction. |
||
x = -5 p = 2 │ 1 + -$x∧$p = 36 │ 1 + (-$x)∧$p = 36 │ 1 + (-($x)∧$p) = 26 │ (1 + -$x)∧$p = 36 │ 1 + -($x∧$p) = -24 |
x = -5 p = 2 │ 1 + -$x∧$p = 36 │ 1 + (-$x)∧$p = 36 │ 1 + (-($x)∧$p) = 26 │ (1 + -$x)∧$p = 36 │ 1 + -($x∧$p) = -24 |
||
x = -5 p = 3 │ 1 + -$x∧$p = 216 │ 1 + (-$x)∧$p = 216 │ 1 + (-($x)∧$p) = 126 │ (1 + -$x)∧$p = 216 │ 1 + -($x∧$p) = 126 |
x = -5 p = 3 │ 1 + -$x∧$p = 216 │ 1 + (-$x)∧$p = 216 │ 1 + (-($x)∧$p) = 126 │ (1 + -$x)∧$p = 216 │ 1 + -($x∧$p) = 126 |