          (id! (:id x))
          (string? (:name x))))
 
-(defn call! [x]
-  (check (= :call (:type x))
-         (ref! (:ref x))
-         (sequential? (:args x))
-         (every? id! (:args x))))
-
 (defn data! [x]
   (cond
    (= :tag (:type x)) (check (tag! x))

                     :type :call
                     :ref {:type :ref/js
                           :js "cljs.core._STAR_"}
                     :args ["b" "b"]}
                    {:id "four"
                     :type :constant
                     :data 4}

                     :type :call
                     :ref {:type :ref/js
                           :js "cljs.core._STAR_"}
                     :args [{:type :ref/id :id "four"} {:type :ref/id :id "a"} {:type :ref/id :id "c"}]}
                    {:id "result"
                     :type :call
                     :ref {:type :ref/js
                           :js "cljs.core._"}
                     :args [{:type :ref/id :id "b_squared"} {:type :ref/id :id "four_a_c"}]}]}]})

(notebook! example-a)

