 	 (keys @known-context-input-formats#))
 
        (defn- ~find
-         [file#]
-         (first
-          (for [[name# predicate#] @known-context-input-formats#
-                :when (with-open [in-rdr# (reader file#)]
-                        (predicate# in-rdr#))]
-            name#)))
+         ([file#]
+            (first
+             (for [[name# predicate#] @known-context-input-formats#
+                   :when (with-open [in-rdr# (reader file#)]
+                           (predicate# in-rdr#))]
+               name#)))
+         ([file# format#]
+            format#))
 
        nil)
 


     (defmulti ~read
       ~(str "Reads " name " from file, automatically determining the format used.")
       {:arglists (list [(symbol "file")])}
       (fn [& args#] (apply ~find args#)))
     (defmethod ~read :default
       [file#]

       ~(str "Defines input format for " name "s.")
       [~'input-format [~'file] & ~'body]
       `(defmethod ~'~read ~~'input-format
          ([~~'file]
             ~@~'body)
          ([~~'file ~'~'_]
             ~@~'body)))

     (defmacro ~(symbol (str "define-" name "-output-format"))
       ~(str "Defines output format for " name "s.")
