The Mythryl lexer distinguishes between certain infix and prefix arithmetic operators by the presence or absence of adjacent whitespace:
a-b; # binary infix a - b; # binary infix a -b; # unary prefix a- b; # unary postfix
This is something of a kludge, but it allows us to use ascii - for both subtraction and negation and ascii * for both multiplication and dereferencing, making the most of the very limited number of available seven-bit ascii characters.
Thus, in Mythryl one can define factorial quite naturally as
#!/usr/bin/mythryl fun 0! => 1; n! => n * (n - 1)! ; end; printf "%d\n" 3! ;
Running this yields:
linux$ ./my-script 6 linux$
Judiciously used, this capability can significantly improve code readability.
Mythryl also supports a limited number of circumfix operators, including
|x| <x> /x/ {i}
This allows for example a more natural absolute value (or magnitude) function definitions:
#!/usr/bin/mythryl fun |x| = (x < 0) ?? -x :: x; a = -3; printf "%d\n" |a| ;
Running this yields:
linux$ ./my-script 3 linux$
Special for fans of quantum mechanics, Mythryl even allows you to define
<x| |x>
For example:
#!/usr/bin/mythryl fun <x| = printf "Wait a minute! You don't look like a quantum mechanic!\n"; psi = 42; <psi| ;
The script output when run should be no surprise:
linux$ ./my-script Wait a minute! You don't look like a quantum mechanic! linux$