Возвращает список целых значений, который не входит в диапазон чисел в существующем списке:

#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]