A distinction between PRQL and most other programming languages is the function call syntax. It consists of the function name followed by arguments separated by whitespace.
function_name arg1 arg2 arg3
If one of the arguments is also a function call, it must be encased in parentheses, so we know where arguments of inner function end and the arguments of outer function start.
outer_func arg_1 (inner_func arg_a, arg_b) arg_2
Function calls can also specify named parameters using
function_name arg1 named_param:arg2 arg3
There is a alternative way of calling functions: using a pipeline. Regardless of
whether the pipeline is delimited by pipe symbol
| or a new line, the pipeline
is equivalent to applying each of functions as the last argument of the next
a | foo 3 | bar 'hello' 'world' | baz
… is equivalent to …
baz (bar 'hello' 'world' (foo 3 a))