
An instance of Read means that read can *produce* a Text, not that it can consume one. read always reads from a String, as you can see from its type:
Prelude Data.Text> :t read read :: Read a => String -> a
(Note that it is the result type a in the context for Read.)
yes, seeing the type signature I understood it. I was googling it without much luck, I didn't think of using ghci. I'll use that next time.
See the Data.Text.Read module (part of the text package you already have installed) for how to do similar things with a Text as a source.
I see... However it uses Either and returns a pair, unlike "read". It's a plus for reliability but an annoyance in my case. In my case I know positively it's a number. In this case I did a filter isDigit, but this will happen also if I match using a regular expression and [0-9] or \d. In the end the most terse way to code it is to go through unpack then it seems. Using Data.Text.Read all I see is: fst $ right $ decimal t where right (Right a) = a so I'll probably do: read $ unpack t and be done with it... Thank you! emmanuel