The comma can give multiple arguments the same type, while the semicolon makes
sure they each have their own type.
using a: string
proc foo(a, b: int) = echo "foo"
proc bar(a; b: int) = echo "bar"
foo(1, 2)
bar("a", 2)
Run
template foo(a, b: int) = echo "foo"
template bar(a; b: int) = echo "bar" # arguments with no type in templates
are `untyped`
foo(1, 2)
bar(sdmfsp, 2)
Run
proc foo[T, U: SomeInteger](a: T, b: U) = echo "foo"
proc bar[T; U: SomeInteger](a: T, b: U) = echo "bar"
foo(1, 2)
bar("a", 2)
Run
Breaking into multiple lines should not be required by the syntax, it just
looks weird if only 1 part of the parameter list is in a different line or
something like that.