18 lines
374 B
Haskell
18 lines
374 B
Haskell
safeHead :: [a] -> Maybe a
|
|
safeHead [] = Nothing
|
|
safeHead (x:_) = Just x
|
|
|
|
safeTail :: [a] -> Maybe [a]
|
|
safeTail [] = Nothing
|
|
safeTail (_:xs) = Just xs
|
|
|
|
safeLast :: [a] -> Maybe a
|
|
safeLast [] = Nothing
|
|
safeLast[x] = Just x
|
|
safeLast (_:xs) = safeLast xs
|
|
|
|
safeInit :: [a] -> Maybe [a]
|
|
safeInit [] = Nothing
|
|
safeInit [_] = Just []
|
|
safeInit (x:xs) = fmap ([x] ++) (safeInit xs)
|