I for one prefer the more "algebraic" implementation. Why worry about performance when you get theorems for free?!
Monads.
Monads.
Hacker News.
From David Foster Wallace's "E Unibus Pluram".
However, there aren't any rewrite rules for list-based code, at least with the standard library. Rewrite rules are generally used for libraries designed explicitly with performance in mind like Vector and Bytestring; the standard String type and the Prelude don't fall into this category.
[1]: http://stackoverflow.com/questions/578063/what-is-haskells-s...
[2]: http://www.haskell.org/ghc/docs/7.0.1/html/users_guide/rewri...