
13 Sep
2007
13 Sep
'07
12:49 p.m.
* Neil Mitchell wrote:
There are 4 variants of tail:
tail :: [a] -> [a] -- normal tailDef :: [a] -> [a] -> [a] -- returns the first argument on [] tailMay :: [a] -> Maybe [a] -- returns a Nothing tailNote :: String -> [a] -> [a] -- crashes, but with a helpful message tailSafe :: [a] -> [a] -- returns [] on []
From the logical point of view tailMay is the right one. It pushes the error handling to the caller programm.
tail = fromJust . tailMay