

Mythryl uses pattern matching in many contexts other than case statements. The simplest is the pattern-match statement, which takes the form:
my pattern = expression;
This allows efficient unpacking of a nested datastructure into named components:
linux$ cat my-script
#!/usr/bin/mythryl
r = ( (1,2), (3,4), (5,6) );
my ((a,b), (c,d), (e,f)) = r;
printf "((%d,%d), (%d,%d), (%d,%d))\n" a b c d e f;
linux$ ./my-script
((1,2), (3,4), (5,6))
In the common case in which the pattern consists of a single variable, the my keyword may be dropped:
linux$ cat my-script
#!/usr/bin/mythryl
i = 12 * 13;
printf "Product = %d.\n" i;
linux$ ./my-script
Product = 156.
This looks superficially much like a C assignment statement; it differs in that the Mythryl pattern-match statement never has any side-effects upon the heap; all it does is create new local names for existing values.

