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
.
我必须使 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
.