code: private AstExec parseFunctionApplication() {
      eatChar('(');
      ArrayList<AstRoot> asts = new ArrayList<>();
      while (skipWS() != ')')
        asts.add(parseNext());
      eatChar(')');
      AstExec res = new AstExec(asts);
      if (peek(0) == '-') {
        eatChar('-');
        eatChar('>');
        AstId tmpid = new AstId(token());
        res = new AstExec(new AstRoot[]{new AstId("tmp="), tmpid, res});
      }
      return res;
    }
docs: Parse "function application" expression, i.e. pattern of the form "(func ...args)"