У меня возникли проблемы с использованием списка в Haskell. Мой вопрос: как вы смотрите в списке при использовании понимания списка. Например: например, у меня есть список [1,2,3,4,5]
как аргумент функции распознавания списка. Эта функция должна построить новый список из этого списка, но условие состоит в том, что, если следующий элемент тот же, то не включайте этот элемент в список.Забегая вперед в списках со списком осмысления
build [] = []
build list = [x | x <- list, (if current element equal next ignore)]
Так что список [1,1,2,3,4,4,4]
Выведет [1,2,3]
Любая помощь оценили
почему не '[1,2,3,4]'? –
Одним из способов было бы «zip» список с самим собой минус первый элемент. Однако для этого потребуется 'zip_longest' функция вместо' zip'. В python эта функция доступна, и поэтому вы можете написать '[x for x, y в zip_longest (xs, xs [1:]), если x! = Y]', однако я не думаю, что есть 'zip_longest' эквивалент в Haskell. По крайней мере, не полиморфный, который мог бы гарантировать правильные результаты (вы не можете использовать элемент списка в качестве значения по умолчанию в этом случае). – Bakuriu
Как он должен вести себя с последним элементом списка (так как нет следующего элемента)? – shang