Buscando en la lista

He estado tratando de definir una función que, dada una lista de enteros y un entero n, devuelve un valor booleano que indica si n aparece exactamente una vez en la lista.

Tengo esto, pero no funciona y no puedo resolverlo

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

Respuestas a la pregunta(4)

Su respuesta a la pregunta