

Mythryl is a (mostly-)functional programming language; functions are accordingly of central importance.
From a strictly formal point of view, every Mythryl function has exactly one argument and returns exactly one result, which is to say it has type
Input_Type -> Output_Type;
Thus, the canonical Mythryl function is something like
linux$ cat my-script
#!/usr/bin/mythryl
fun reverse_string string
=
implode (reverse (explode string));
printf "reverse_string \"abc\" = \"%s\".\n" (reverse_string "abc");
linux$ ./my-script
reverse_string "abc" = "cba".
We frequently think of Mythryl functions as taking multiple arguments because the input type is often a tuple or record:
linux$ cat my-script
#!/usr/bin/mythryl
fun add_three_ints (i, j, k)
=
i + j + k;
printf "Result = %d\n" (add_three_ints (1, 2, 3));
linux$ ./my-script
Result = 6
From a formal point of view, however, this is still a function taking a single argument, which is then pattern-matched into its constituent elements. This is more than a theoretical fiction. For example, we can compute the argument tuple separately and then provide it to the function as a single argument:
linux$ cat my-script
#!/usr/bin/mythryl
fun add_three_ints (i, j, k)
=
i + j + k;
arg = (1, 2, 3);
printf "Result = %d\n" (add_three_ints arg);
linux$ ./my-script
Result = 6

