Ответ 1
Вы получили это, в значительной степени. Таким образом, остальная часть сделки заключается в разработке функции предиката для вашего списка. Предполагая, что у вас уже есть список под названием xs и предикатная функция p, вам нужно всего лишь
фильтр p xs.
Часто вы увидите p, определенное как анонимное или лямбда-выражение, например:
filter (\n → n `mod` 2 == 0) xs.
Это не обязательно, и в качестве новичка может быть полезно определить именованные функции.
isEven n = n `mod` 2 == 0
evenListNumbers xs = filter isEven xs
evenListNumbers [1,2,3,4]
Что это [2,4].
Таким образом, предикатная функция для данного фильтра списка принимает элемент списка и возвращает логическое значение. Если это правда, элемент сохраняется (или добавляется в результирующий список), и если он ложный, он передается.