title: Data.Text vs String
body: <p>While the general opinion of the Haskell community seems to be that it's always better to use <code>Text</code> instead of <code>String</code>, the fact that still the APIs of most of maintained libraries are <code>String</code>-oriented confuses the hell out of me. On the other hand, there are <a href="http://hackage.haskell.org/package/basic-prelude" rel="nofollow noreferrer">notable projects</a>, which consider <code>String</code> as a mistake altogether and provide a <code>Prelude</code> with all instances of <code>String</code>-oriented functions replaced with their <code>Text</code>-counterparts.</p>
  <p>So are there any reasons for people to keep writing <code>String</code>-oriented APIs except backwards- and standard Prelude-compatibility and the &quot;switch-making inertia&quot;?
  Are there possibly any other drawbacks to <code>Text</code> as compared to <code>String</code>?</p>
  <p>Particularly, I'm interested in this because I'm designing a library and trying to decide which type to use to express error messages.</p>