Существует ли класс типов, который абстрагирует функцию filter?
filter
Я думаю о чем-то вроде
class Filterable t where filter :: (a -> Bool) -> t a -> t a
Если это не так, есть ли явная причина дляэто?
Да, пакет обеспечивает Filterable, с несколькими экземплярами для распространенных типов.
Filterable
Существует метод mfilter в Control.Monad ( ссылка )
mfilter
Control.Monad
mfilter :: MonadPlus m => (a -> Bool) -> m a -> m a