"Hell Difficulty" Haskell Fast & Hard
There's very little I would salvage from the model code.


Converting the arguments list into comma-separated string is a little hackish and not very efficient (nevertheless it works, and I'd be totally OK with it for a quick throw away script). Therefore I would not use getListFromString.
askUser is not needed since we're not interacting with the user.
There's already an alternative to maybeRead, in Text.Read called readMaybe.


This is how I would implement it:

import System.Environment (getArgs)
import Text.Read (readMaybe)

main :: IO ()
main = do
  values &lt;- fmap (map readMaybe) getArgs
  putStrLn $ maybe "Arguments invalid" (show . sum) $ sequence values