Return 在不使用 elem 函数和递归的情况下,给定字符是否在列表中

Return whether the given character is in a list or not without the use of the elem function and recursion

我必须使 elementIsInList :: Eq a => a -> [a] -> Bool 函数的行为方式与 elem 函数的行为方式相同,但我不能使用递归,当然,elem 函数本身。我考虑过使用 filter 函数来实现它,但我无法弄清楚 filter 是如何工作的。我在正确的轨道上吗?

elementIsInList x xs = filter(x==xs) xs

x == xs 没有多大意义,x 是要查找的元素,而 xs 是整个元素列表。您可以使用 lambda 表达式:

filter (<strong>\x -> x == y</strong>) xs

或中缀运算符部分的:

filter <strong>(x ==)</strong> xs

此外,您需要检查列表是否为空。 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.