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