                        [] col-map)
          ) csv))
 
+(defn apply-ns [f row col-ns]
+  (->> col-ns
+       (map (partial nth row))
+       (apply f)))
+
 (defn derive-column
   "Adds a new column to the end of the row which is derived from
 column with position col-n.  f should just return the cells value.

    (apply remove-indices merged to-drop)))

(defn fuse [csv f & cols]
  "Merge columns with the specified function f receives the number of
cols supplied number of arguments e.g. If you fuse 3 columns f
must accept 3 arguments"
  (map (partial fuse-row cols f) csv))

If no f is supplied the identity function is used, which results in
the specified column being cloned."

  ([csv col-n]
     (derive-column csv identity col-n))

  ([csv f & col-ns]
     (->> csv
          (map (fn [row]
                 (conj row
                       (apply-ns f row col-ns)))))))

;; alias to create a lightweight pattern matching style syntax for use
;; with mapc
