add optional function to tr

tr function returns the tag info as a symbol, which I found inconvenient.
So I added optional arguments to handle tag info.

e.g.
```clojure
(tr ... identity)
(tr ...)
```