| What do you think of improving the error messages like
| Prelude.take: negative argument
| (for say, take (-1) [(0,'b'),(1,'a')] )
That would be splendid. But I don't see how to do it.
take :: Int -> [a] -> [a]
Since take is polymorphic in a, I can't print a member of the
list. If you want to define your own take
mytake :: Show a => Int -> [a] -> [a]
that's fine, but it's a different function.
And for (head []) there's really no useful info to hand. So I'm stumped.
A long-standing, but alas un-implemented, plan is to use cost-centre
stacks to give a sort of back-trace.
Simon