          ::spec/invalid 
          (spec/conform ::typed-fun [nil [:double 'a :double 'b] :a :b :c])))
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Compilable
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Compilable: Everything is here!!!
 
 (defn expr-access [i]
   (access/index-accessor i {:default-base [nil nil]}))

(ns epicea.typed.core
  (:require [clojure.spec :as spec]
            [epicea.utils.debug :as debug]
            [epicea.utils.core :as core]
            [epicea.utils.defmultiple :refer [defmultiple]]


(defn try-parse-s-expr [x]
  (try
    (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)
