How do I best map over all elements of a list, except for the last list element?
Say we have a list let l = [1,2,3,4]
and want to get [2,3,4,4]
.
I do have a solution, but it doesn't feel like the "functional" way to do it (in ghci):
let l = [1,2,3,4]
let len = toIntegral $ length l -- to avoid a type mismatch Integer <-> Int
let l1 = zip l [1..]
let l2 = map (\(x,y) -> if y < len then (x + 1,y) else (x,y)) l1
let l3 = map (fst) l2
Not very nice...I do hope there is a better way! Since I'm a novice in functional programming, I don't know where to start looking for it though.