Pesquisando na lista

Eu tenho tentado definir uma função que, dada uma lista de números inteiros e um número inteiro n, retorne um booleano indicando se n ocorre exatamente uma vez na list

Eu tenho isso, mas não está funcionando e não consigo descobrir

once :: [a] -> (a -> Bool) -> Bool 
filter _ [] = []  
filter p (x:xs)   
    | p x       = x : filter p xs  
    | otherwise = filter p xs 

An example of what I want would be:
Main>  once [2,3,2,4] 2
False
Main> once [1..100] 2
True

questionAnswers(4)

yourAnswerToTheQuestion