         [clojure.walk :only [prewalk]])
   (:require [midje.emission.boundaries :as emission-boundary]
             [midje.emission.api :as emit]
+            [midje.emission.plugins.silence :as emission-silence]
             [midje.clojure-test-facade :as ctf]))
 
 ;; Formulas work by running up to *num-trials* trials per formula. If there is a failure,

        [opts-map [bindings & body]] (pop-opts-map more-args)]
    [docstring? opts-map bindings body]))

;; Formula Reporting - 
;; one report for every batch of trials generated by a single formula run

(def formula-reports (atom []))

(def formula-emission-functions
  {:pass (fn [])
   :fail (fn [report-map]
           (when-not (= :pass (:type report-map))
             (ctf/note-fail))
           (swap! formula-reports conj report-map))})



(defmacro around-formula [& body]
  `(try

       (emit/fail failure#)
       (emit/pass))
     (reset! formula-reports []))))




(defmacro formula 
  "ALPHA/EXPERIMENTAL (subject to change) - Generative-style fact macro. 
