#list #haskell #return #element #range
#Список #haskell #Возврат #элемент #диапазон
Вопрос:
У меня есть список значений:
[0,7,4,5,3,1,4,5,5,1,7,0,7,7,0]
и хотел бы вернуть любые значения, которые не входят в диапазон [1..8]
(т.е. я хотел бы вернуть (из приведенного выше примера) элементы 2, 6 и 8 в виде
[2,6,8]
)
Кажется, у меня возникли проблемы с объединением этого в функцию. Я знаю, что notElem
здесь было бы хорошо работать, но я не уверен, как применить список [1 .. 8] к списку значений, показанному выше, чтобы получить элементы, показанные именно тогда.
Ответ №1:
Используется filter
для сохранения элементов, удовлетворяющих условию.
Prelude> filter (`notElem` theBigListOfValues) [1..8]
[2,6,8]
Или просто возьмите дополнение с помощью (\)
оператора.
Prelude> import Data.List
Prelude Data.List> [1..8] \ theBigListOfValues
[2,6,8]