Statements may be terminated with a semicolon, but it is usually unnecessary. (They are added internally, as needed.)
By default, an end of a line is an end of a statement.
Generally, an infix operator or one of the following does not terminate a statement at the end of a line.
: ( [ { , |
A comma at the end of a line terminates all unbounded argument lists (function calls not using parentheses), just as the end-of-line would do. This allows you to use unbounded lists within bounded lists over multiple lines.