我如何最好地映射列表的所有元素,除了最后一个列表元素?
假设我们有一个列表let l = [1,2,3,4]
并且想要获取[2,3,4,4]
.
我确实有一个解决方案,但感觉不像是“功能性”的方法(在 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
不是很好...我希望有更好的方法!由于我是函数式编程的新手,我不知道从哪里开始寻找它。