Personal tools

99 questions/Solutions/2

From HaskellWiki

< 99 questions | Solutions(Difference between revisions)
Jump to: navigation, search
(Add foldl based solution.)
Line 14: Line 14:
   
 
myButLast'''' = head . tail . reverse
 
myButLast'''' = head . tail . reverse
  +
  +
myButLast''''' = snd.(foldl (\(a,b) c -> (c,a)) (e1, e2))
  +
where e1 = error "List too small!"
  +
e2 = error "List is null!"
 
</haskell>
 
</haskell>
   

Revision as of 00:12, 11 May 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
 
myButLast''''' = snd.(foldl (\(a,b) c -> (c,a)) (e1, e2))
    where e1 = error "List too small!"
          e2 = error "List is null!"