| 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

Reply via email to