2533: Generic functions that take integral arguments should work the same way as their prelude counterparts

kahl at cas.mcmaster.ca kahl at cas.mcmaster.ca
Sat Aug 23 13:33:55 EDT 2008

Neil Mitchell <ndmitchell at gmail.com> wrote:
 > > Hi
 > >
 > >> The Prelude functions drop, take, and splitAt are unfailing (never
 > >> call error). This patch changes the Data.List generic versions to
 > >> behave the same way. At present, they call error on negative
 > >> arguments.
 > >
 > > I had always just assumed that take and genericTake did the same
 > > thing, so had never even realised this problem existed. I'd call this
 > > a bug, that needs fixing.
 > Maybe the bug is in 'drop', 'take' and 'splitAt' and it was intended to 
 > fix it in 'generic' variants. Is there a good reason why to ignore 
 > negative number arguments? It may hide bugs.

A similar argument could be made against ``take 5 [] = []''.

A different solution would be using Nat or Natural as arguments here ---
then the conversion introduces an obvious place to check for errors.


More information about the Libraries mailing list