Вот мое полное решение, собранное из ответов выше:
(use '[clojure.contrib.string :only (join, split-lines, ltrim)])
(defn strip-margin
([s d] (->> s split-lines (map ltrim) (map #(.replaceFirst % d "")) (join "\n")))
([s] (strip-margin s "\\|")))
Вот некоторые «реальные» примеры ввода и вывода:
(println
(strip-margin "|<?xml version='1.0' encoding='utf-8'?>
|<people>
| <person>
| <name>Joe Smith</name>
| </person>
|</people>"))
==>
<?xml version='1.0' encoding='utf-8'?>
<people>
<person>
<name>Joe Smith</name>
</person>
</people>
nil
Спасибо всем авторам.