                    :header (spec/? ::sized-type)
                    :data ::sized-type))
 
-(spec/def ::type (spec/or :primitive ::primitive
-                          :primitive-value ::primitive-value
-                          :sized-type ::sized-type
+(spec/def ::type (spec/or :sized-type ::sized-type
                           :array ::array
                           :dynamic ::dynamic))
 

                    :tag (constantly true)
                    :data ::sized-type))

(spec/def ::sized-type (spec/or :number ::number
                                :record ::record
                                :union ::union
                                :unspecified ::unspecified ;; <-- a primitive building block




(defn expr-to-typed-value [expr]
  (spec/conform ::type expr))

;;; OBS: Vi måste räkna referenserna till varje uttryck som vi kompilerar.
;;; Kanske i argmap? Om antalet referenser överskriver 1 binder vi uttrycket
;;; till en variabel.
