Often Haskell programmers end up with "error, head " - a totally useless error message!
Because in developing Catch I have 10,000's of lines, that would be a real pain. To combat this I have:
headNote :: String -> [a] -> a
headNote err  = error $ "headNote, " ++ err
headNote err (x:xs) = x
I also have fromJustNote, lookupJust (fromJust . lookup), assertNote etc - loads of useful safe functions. I also have headMaybe :: [a] -> Maybe a. Perhaps this could be useful as a library - the safe library?
I would imagine lots of functions from the various Prelude/List libraries, some with Note versions taking a parameter to give a better error message, some with Maybe versions to return a Maybe on failure.
Anyone think this would be useful? Its technically trivial to implement, but I don't have enough time to manage this, so perhaps someone else would like to take this one on?