`APL`

tag). An application corresponds to an expression of the
form `f(...)`

or `f@...`

.
Of course, first we look up the function by its name. If the result is a native
function, we immediately apply it (see: `nat@arg`

). Otherwise,
we see if the result is
a user-defined function (test: `if(exp[TAG_idx] = FUN_tag`

). If so, we
consider the arguments. There are two possibilities:

- If the arguments expression is a
`TAB`

, we are dealing with a normal function call`f(x,y,...)`

. - Otherwise, we are dealing with something like
`f @ t`

. In this case, we have to evaluate the expression`t`

in the hope that it will result in a`TAB`

.

`eval_call`

with the function (`exp`

) and the table of arguments (`arg`

or `val`

).