I have to make the elementIsInList :: Eq a => a -> [a] -> Bool
function that should behave the same way the elem
function would behave, but I can't use recursion and of course, the elem
function itself. I thought about implementing it using the filter
function, but I can't figure out how filter
works. Am I on the right track?
elementIsInList x xs = filter(x==xs) xs
CodePudding user response:
x == xs
makes not much sense, x
is an element to look for, whereas xs
is the entire list of elements. You can make use of a lambda expression:
filter (\x -> x == y) xs
or of an infix operator section:
filter (x ==) xs
Furthermore you need to check if the list is empty. null :: Foldable f => f a -> Bool
will return True
if the list is empty, and False
if it is not. You will then need to negate the result with not :: Bool -> Bool
.