title: Why does the Data.String.IsString typeclass only define one conversion?
body: <p>Why does the Haskell base package only define the <code>IsString</code> class to have a conversion from <code>String</code> to 'like-string' value, and not define the inverse transformation, from 'like-string' value to <code>String</code>?</p>
  
  <p>The class should be defined as:</p>
  
  <pre><code>class IsString a where
      fromString :: String -&gt; a
      toString :: a -&gt; String
  </code></pre>
  
  <p>ref: <a href="http://hackage.haskell.org/packages/archive/base/4.4.0.0/doc/html/Data-String.html" rel="nofollow noreferrer">http://hackage.haskell.org/packages/archive/base/4.4.0.0/doc/html/Data-String.html</a></p>