 
 (defn try-parse-s-expr [x]
   (try
-    (let [k (eval x)]
-      (if (compilable? k)
-        k))
+    (let [[f & r] x
+          k (apply (eval f) 
+                   (map parse r))]
+      (if (compilable? k) k))
     (catch Throwable _ nil)))
-  
+
+
+(defn if-statement [& args] {:compilable-type :if})
+
+;(defn dup [x]
+;  (let [p (parse x)]
+;    p))
 
 (defn parse [x]
   (or (try-parse-type x)

      (core/common-error "Failed to parse " x)))
  
(assert (compilable? (parse 9)))

(defn compile-expr [argmap x cb]
  (cb argmap (access/get x expr)))

  (:long [x] (long-to-dynamic (access/get x type-body))))
  
(assert (= 9 (to-dynamic-expr [:long [:value 9]])))
