 (def size-add +)
 (def size-mul *)
 (def size-max max)
+
+(declare compute-size)
 
 (defn compute-vec-size [x]
   (size-mul (compute-size (vec-type x))

(assert (spec/valid? ::type 9))
(assert (= [:long [:value 9]] (spec/conform ::type 9)))
(assert (spec/valid? ::type [:record :a [:constant 9] :b :double]))

(defn export-primitive [x]
  [:export x])


(def primitive-values #{:double :float :long :int :bool :number})

(defn size-op [f]
  (fn [a b]
    (if (and (number? a) (number? b))
