(defn analyze-seq
[form env]
(let [op (first form)]
(when (nil? op)
(throw (ex-info "Can't call nil"
(merge {:form form}
(-source-info form env)))))
(let [mform (macroexpand-1 form env)]
(if (= form mform) ;; function/special-form invocation
(parse mform env)
(-> (analyze-form mform env)
(update-in [:raw-forms] (fnil conj ())
(vary-meta form assoc ::resolved-op (resolve-sym op env))))))))