Как мне лучше всего отобразить все элементы списка, кроме последнего элемента списка?
Скажем, у нас есть список 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
Не очень приятно... Надеюсь, есть лучший способ! Поскольку я новичок в функциональном программировании, я не знаю, с чего начать поиск.