https://github.com/akkartik/mu/blob/master/static-dispatch.mu
 1 # Example program showing how multiple functions with the same name can
 2 # coexist, and how we select between them.
 3 #
 4 # Expected output:
 5 #   4
 6 #   7
 7 #   7
 8 
 9 def test a:num -> b:num [
10   local-scope
11   load-inputs
12   b <- add a, 1
13 ]
14 
15 def test a:num, b:num -> c:num [
16   local-scope
17   load-inputs
18   c <- add a, b
19 ]
20 
21 def main [
22   local-scope
23   a:num <- test 3  # selects single-input version
24   $print a, 10/newline
25   b:num <- test 3, 4  # selects double-input version
26   $print b, 10/newline
27   c:num <- test 3, 4, 5  # prefers double- to single-input version
28   $print c, 10/newline
29 ]