99 questions/Solutions/2
From HaskellWiki
< 99 questions  Solutions(Difference between revisions)
Liujiangfeng (Talk  contribs) 

(4 intermediate revisions by 3 users not shown) 
Latest revision as of 17:26, 28 December 2014
(*) Find the last but one element of a list.
myButLast :: [a] > a myButLast = last . init myButLast' x = reverse x !! 1 myButLast'' [x,_] = x myButLast'' (_:xs) = myButLast'' xs myButLast''' (x:(_:[])) = x myButLast''' (_:xs) = myButLast''' xs myButLast'''' = head . tail . reverse lastbut1 :: Foldable f => f a > a lastbut1 = fst . foldl (\(a,b) x > (b,x)) (err1,err2) where err1 = error "lastbut1: Empty list" err2 = error "lastbut1: Singleton" lastbut1safe :: Foldable f => f a > Maybe a lastbut1safe = fst . foldl (\(a,b) x > (b,Just x)) (Nothing,Nothing)