        (cond
         (symbol? form) (analyze-symbol env form)
         (and (seq? form) (seq form)) (analyze-seq env form name)
+        (map? form) (analyze-map env form name)
+        (vector? form) (analyze-vector env form name)
         :else {:op :constant :env env :form form}))))
 
 (defn eval1


(analyze envx '(ns fred (:require [your.ns :as yn]) (:require-macros [clojure.core :as core])))
(defmacro js [form]
  `(emit analyze ({:ns (@namespaces 'cljs.user) :context :statement :locals {}} '~form)))

(defn jseval [form]
  (let [js (emits (analyze {:ns (@namespaces 'cljs.user) :context :expr :locals {}}

(defmethod emit :var
  [{:keys [info env] :as arg}]
  (emit-wrap env (print (:name info))))

(defmethod emit :meta
  [{:keys [expr meta env]}]
  (emit-wrap env
    (print (str "cljs.core.with_meta(" (emits expr) "," (emits meta) ")"))))

(defmethod emit :map
  [{:keys [children env]}]
  (emit-wrap env
    (print (str "cljs.core.hash_map(" (comma-sep (map emits children)) ")"))))

(defmethod emit :vector
  [{:keys [children env]}]
  (emit-wrap env
    (print (str "(new cljs.core.Vector(null, ["
                (comma-sep (map emits children)) "]))"))))

(defmethod emit :constant
  [{:keys [form env]}]
