
On Thu, Dec 29, 2011 at 9:25 PM, Peter Hall
If I have something like this
main = do args <- getArgs let file = args !! 0 -- etc...
And I run it without any arguments, I get an error message like this: "Prelude.(!!): index too large".
What's the best way to handle an error like this to give a better message back to the user?
Don't use partial functions (functions that can fail on some input) except if you're sure they won't fail (and even then you may be better off not using them...), here you can use pattern matching :
main = do args <- getArgs case args of [file] -> -- etc _ -> error "You should call this program with one file argument !!"
In this particular case (arguments parsing), if you ever find yourself with more complicated argument handling to do, consider using one of the good packages that make this easy and safe to do like cmdargs. -- Jedaï