redHandlers-0.1: Network/HTTP/RedHandler/Utils.hs
module Network.HTTP.RedHandler.Utils where
import Data.Char(toLower)
-- map-like functions
mapFst f (x,y) = (f x, y)
mapSnd f (x,y) = (x, f y)
-- string conversion
low = map toLower
-- n tuples
fst3 (x,_,_) = x
snd3 (_,x,_) = x
trd3 (_,_,x) = x
fst4 (x,_,_,_) = x
snd4 (_,x,_,_) = x
trd4 (_,_,x,_) = x
fourth4 (_,_,_,x) = x
-- list processing
lookupByFun :: Eq a => (b->a) -> a -> [b] -> Maybe b
lookupByFun f a [] = Nothing
lookupByFun f a (b:bs) = if (f b == a) then Just b
else lookupByFun f a bs
safeHead :: [a] -> Maybe a
safeHead [] = Nothing
safeHead (x:_) = Just x