fn call(
        &mut self,
        left: Spanned<AST>,
        trees: &TokenTrees,
        trees_idx: &mut usize,
    ) -> Result<Spanned<AST>, Syntax> {
        let argument = self.expr(trees, trees_idx, Prec::Call.left())?;
        let combined = Span::combine(&left.span, &argument.span);

        let mut form = match left.item {
            AST::Sugar(Sugar::Form(f)) => f,
            _ => vec![left],
        };
        form.push(argument);
        return Ok(Spanned::new(AST::Sugar(Sugar::Form(form)), combined));
    }
Parses a function call.
Function calls are a bit magical,
because they're just a series of expressions.
There's a bit of magic involved -
we interpret anything that isn't an operator as a
function call operator. Then pull a fast one and
not parse it like an operator at all.
passerine/src/compiler/parse.rs