Mythryl function syntax supports implicit case expressions, allowing a function to be expressed as a sequence of pattern => expression pairs without need to write an explicit case.
Thus, the script
linux$ cat my-script #!/usr/bin/mythryl fun from_roman string = case string "I" => 1; "II" => 2; "III" => 3; "IV" => 4; "V" => 5; "VI" => 6; "VII" => 7; "VIII" => 8; "IX" => 9; _ => raise exception DIE "Unsupported Roman number"; esac; printf "from_roman III = %d\n" (from_roman "III"); linux$ ./my-script from_roman III = 3
may be written more compactly as
linux$ cat my-script #!/usr/bin/mythryl fun from_roman "I" => 1; from_roman "II" => 2; from_roman "III" => 3; from_roman "IV" => 4; from_roman "V" => 5; from_roman "VI" => 6; from_roman "VII" => 7; from_roman "VIII" => 8; from_roman "IX" => 9; from_roman _ => raise exception DIE "Unsupported Roman number"; end; printf "from_roman III = %d\n" (from_roman "III"); linux$ ./my-script from_roman III = 3
This facility is particularly useful when writing short recursive functions with separate terminal and recursion cases:
linux$ cat my-script #!/usr/bin/mythryl r = [ 1, 2, 3 ]; fun sum_list ([], sum) => sum; sum_list (i ! rest, sum) => sum_list (rest, sum + i); end; printf "%d-element list summing to %d.\n" (list::length r) (sum_list (r, 0)); linux$ ./my-script 3-element list summing to 6.