Use dropWhileEnd

It's often faster to use dropWhileEnd p  than  reverse . dropWhile p . reverse. It's always easier to understand. There's an alternative sort of dropWhileEnd that's lazier in the list elements and stricter in the spine (exactly like reverse . dropWhile p . reverse) but faster; this version is not available in Data.List, however, and it's not clear if it would be better or not.