[Haskell-beginners] Use of (n + 1) as parameter - is it more efficient?

Angus Comber anguscomber at gmail.com
Fri Dec 20 18:00:08 UTC 2013


I created my own drop' function like this:

drop' :: Int -> [a] -> [a]
drop' 0 xs     = xs
drop' n []     = []
drop' n (x:xs) = drop' (n - 1) xs


But in the Haskell book I am reading it is written like this:

drop' :: Int -> [a] -> [a]
drop' 0 xs             = xs
drop' (n + 1) []       = []
drop' (n + 1) (x:xs) = drop' n xs

My version seems to work but I am concerned about my third line (drop' n []
    = []).  Is that a problem?

Why does this author use n + 1 as a parameter as opposed to n - 1 like I do
in body?

Or does it make no difference?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20131220/42e8d804/attachment.html>


More information about the Beginners mailing list