I wrote two functions like this, but as you see most part of them are identical, so I want to write a macro to simplify them.

I understand the simple macro examples in my textbook, but I don't know how to write my own.

Here's my code:

```
 (defn load-dict
       ;  "Load database from a txt file previous saved"
       [fname]
       (with-open [rdr (io/reader fname)]
                  (doseq [line (line-seq rdr)]
                         (println line)
                         (def vvv (clojure.string/split line #"\s"))
                         ;(println (str "count of vvv is " (count vvv)))
                         (if (< 1 (count vvv))
                           (add- dict (gen-word (nth vvv 0) (nth vvv 2) (nth vvv 1))))
                         )))
 (defn load-article
       ;  "Load article from a txt file"
       [fname]
       (with-open [rdr (io/reader fname)]
                  (doseq [line (line-seq rdr)]
                         (println line)
                         (def vvv (clojure.string/split line #"\s"))
                         ;(println (str "count of vvv is " (count vvv)))
                         (if (< 1 (count vvv))
                           (add- article vvv ))
                         )))

```

Should I write a macro like: 

```
(defmacro load- [target fname &expr)
  `(... 
    (add- ~target expr)))

```

I actually don't know how to write such a macro. I just hate duplicate code.

PS, the tow function work fine. I don't care about the variable this is part of the code.