(defn parse-invoke
[[f & args :as form] env]
(let [fenv (ctx env :ctx/expr)
fn-expr (analyze-form f fenv)
args-expr (mapv (analyze-in-env fenv) args)
m (meta form)]
(merge {:op :invoke
:form form
:env env
:fn fn-expr
:args args-expr}
(when (seq m)
{:meta m}) ;; meta on invoke form will not be evaluated
{:children [:fn :args]})))