Yeah, I would agree that head, as it is, looks like a mistake.
Instead of:
head :: [a] -> a
I would code it as: head :: [a] -> Maybe a
returning Nothing for empty lists. Same applies to tail.But others have very good reasons to disagree: http://stackoverflow.com/questions/6364409/why-does-haskells...