          (#(pmap (fn [feature] (predict % feature)) (:features test)))
          (#(evaluation (:classes test) % exp))))))
 
-(defn print-exp-data [expdata]
-  (print "L: " (:L expdata) "\n"
-         "length(train_negative): " (:length-train-negative expdata) "\n"
-         "length(test_negative): " (:length-test-negative expdata) "\n"
-         "length(train_positive): " (:length-train-positive expdata) "\n"
-         "length(test_positive): " (:length-test-positive expdata) "\n"
-         "TP: " (:TP expdata) ", FP: " (:FP expdata) ", TN: " (:TN expdata) ", FN: " (:FN expdata) "\n"
-         "Accracy: " (:Accuracy expdata "\n")
-         "Recall: " (:Recall expdata "\n")
-         "Precision: " (:Precision expdata) "\n\n"))
+(defn print-exp-data [exp]
+  {:pre [(reftype? exp) (map? @exp)]}
+  (print "L: " (:L exp) "\n"
+         "length(train_negative): " (:length-train-negative exp) "\n"
+         "length(test_negative): " (:length-test-negative exp) "\n"
+         "length(train_positive): " (:length-train-positive exp) "\n"
+         "length(test_positive): " (:length-test-positive exp) "\n"
+         "TP: " (:TP exp) ", FP: " (:FP exp) ", TN: " (:TN exp) ", FN: " (:FN exp) "\n"
+         "Accracy: " (:Accuracy exp "\n")
+         "Recall: " (:Recall exp "\n")
+         "Precision: " (:Precision exp) "\n\n"))
 
 (defn cross-validate
   ([dataset L k]


(defn evaluation
  ([results facts exp]
   {:pre [(coll? results) (coll? facts) (map? @exp)]}
   (let [numd (count results)]
     (confusion-matrix results facts exp))))


                   (:Accuracy eva)))
          (reduce +)
          (* (/ 1 k))))))

(defn -main [& args]
  (if (= (count args) 8)
