     rules))
 
 (defn create-proc-fn
-  "Create a data processing function based on the given dsl-expression."
+  "Create a data processing function based on the given dsl-expression.
+   An example of a dsl-expression for processing a Clojure seq is given below:
+  
+   {:output-type :clj-map
+    :rules [['myFloat '(nth 0)]
+            ['myStr '(clojure.string/lower-case (nth 1)) :string]
+            ['myRatio '(/ (nth 2) 100.0)]
+            ['myStr2 '(str (nth 3) (nth 4)) :string]]}
+   
+   The resulting function will for the input [1.23 \"FOO\" 42 \"bar\" \"baz\"] produce the output {\"myFloat\" 1.23, \"myStr\" \"foo\", \"myRatio\" 0.42, \"myStr2\" \"barbaz\"}."
   [dsl-expression]
 ;  (println "Got DSL expression:" dsl-expression)
   (let [input-sym 'input

       :rules (subvec (:rules dsl-expression) start-idx end-idx)})))

(defn combine-proc-fns-vec
  [fn-mapping dsl-expression]
  (reduce
    (fn [v m]


(def ^:dynamic *incremental-indicator-suffix* "#inc")

(defn- create-proc-sub-fn
  "Create a sub part of a processing function.
   The data-processing-definition will be processed recursively.
   This function is responsible for actually resolving the given data processing functions.
   The input symbol will be placed as first argument on the innermost terms."
  [data-processing-definition input]
  (into
    '()
