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-ingredients
12   b <- add a, 1
13 ]
14 
15 def test a:num, b:num -> c:num [
16   local-scope
17   load-ingredients
18   c <- add a, b
19 ]
20 
21 def main [
22   local-scope
23   a:num <- test 3  # selects single-ingredient version
24   $print a, 10/newline
25   b:num <- test 3, 4  # selects double-ingredient version
26   $print b, 10/newline
27   c:num <- test 3, 4, 5  # prefers double- to single-ingredient version
28   $print c, 10/newline
29 ]