質問させて下さい。

(defun navi2ch-article-link-ml-change-period (mlname)
(let ((point 0))
(if (setq point (string-match "\\." mlname))
(navi2ch-article-link-ml-change-period
(concat (substring mlname 0 point)
"-"
(substring mlname (1+ point)))))))

として、(navi2ch-article-link-ml-change-period "mona.giko-foo.bar")
などと呼び出した場合、mona-giko-foo-bar という形で返ってきてほしい
のですが、実際には nil が戻ってきてうまくいきません。
最後に評価されている (setq point (string-match "\\." mlname)) が
nil になっているからだ、という事はわかるのですが、どうすればスマート
に書けるでしょうか?
まだ Lisp の形式になれないのか、混乱してばかりでして…