
On Fri, Jul 13, 2018 at 09:06:51AM +0200, mrx wrote:
That makes sense to me based on the type, sure. So read is some form of casting then?
Yep, but just from `String` and nothing else.
Does this answers your question?
Maybe, but I still don't see what I'd use it for. Is it used to for example read the contents of a file whose file name is provided as that string?
No, you would use `readFile` for that: readFile :: FilePath -> IO String -- Filepath is a type synonym for `String` You would use `read` to convert simple user input (which is usually collected as String) into, say, Integers getLine :: IO String -- this could need read And in general, `Read` is supposed to be compatible with `Show`, so if you used `show` for any reason (some form of cheap serialisation, etc.), `read` should work back the type: λ> show [1..10] "[1,2,3,4,5,6,7,8,9,10]" λ> read it :: [Int] [1,2,3,4,5,6,7,8,9,10] tl;dr: cheap type parsing. For any more specialised/complex parsing, use a proper parsing library like Parsec.