
I'm wondering how usually you parse command line arguments list safely.
Prelude.read: no parse
It's generally not a good idea to call 'read' on user data.
There is (at least one) proper parsing library intended as a direct replacement for Read: http://www.cs.york.ac.uk/fp/polyparse/haddock/Text-Parse.html The basic idea is that the function 'parse' replaces 'read', and to use it at any specific type T: (runParser parse) :: String -> (Either String T, String) You get back either an error message or the value, along with the remaining unparsed text. Instances of the Parse class are defined for all Prelude types, and you can easily derive instances for any of your own types, using the DrIFT tool. Parse is assumed to be an inverse of Show, that is, the derived instances of Parse will read back a canonically derived Show value. Another benefit of using a real parser library is that you can plumb together several parsers quickly if you need to. e.g. runParser (exactly 3 parse) :: String -> (Either String [T], String) Regards, Malcolm