title: Why doesn't Haskell's Prelude.read return a Maybe?
body: <p>Is there a good reason why the type of Prelude.read is</p>
  
  <pre><code>read :: Read a =&gt; String -&gt; a
  </code></pre>
  
  <p>rather than returning a <code>Maybe</code> value?</p>
  
  <pre><code>read :: Read a =&gt; String -&gt; Maybe a
  </code></pre>
  
  <p>Since the string might fail to be parseable Haskell, wouldn't the latter be be more natural? </p>
  
  <p>Or even an <code>Either String a</code>, where <code>Left</code> would contain the original string if it didn't parse, and <code>Right</code> the result if it did?</p>
  
  <p><strong>Edit:</strong></p>
  
  <p>I'm not trying to get others to write a corresponding wrapper for me. Just seeking reassurance that it's safe to do so.</p>