Ну, вы можете отфильтровать список, а затем посмотреть, сколько элементов в результирующем фильтре, верно?
Для начала:
> filter (== 2) [1,2,3,4,5]
[2]
> filter (== 2) [1,2,3,4,5,2,2]
[2,2,2]
И свернуть список внизк значению Bool, вот пример, где мы проверяем, есть ли в списке три элемента, возвращая Bool:
> isThree (a:b:c:[]) = True
> isThree _ = False
Так что составление таких функций - просто короткий вопрос:
> isThree . filter (==2)
или ваш вариант (например, поиск по спискам длиной 1).