Haskell:如何正确地查看值是否在列表中



在一些实践haskell工作,我在我的程序中做一个搜索函数。我没有得到想要的输出,我想我知道为什么,那就是它只检查了列表的头部,而不是尾部或(xs)。这是我试过的。

searchtask [] searchkey = do
putStrLn ""
searchtask (x : xs) searchkey = do
if x == searchkey
then putStrLn $  " Found task: " ++ x
else if x /= searchkey then putStrLn $ "Could not find task." ++ search key
else searchtask xs searchkey

我必须遍历列表吗?

首先,不需要检查x /= searchkey。如果x == searchkey为假,您知道x /= searchkey将为真。其次,因为它永远不可能是false,所以永远不会进行递归调用。最后,您不想打印"无法找到任务";直到您检查了列表中的每个值。

searchtask [] searchkey = putStrLn $ "Could not find task " ++ searchkey
searchtask (x:xs) searchkey =
if x == searchkey
then putStrLn $ " Found task: " ++ x
else searchtask xs searchkey

相关内容

  • 没有找到相关文章

最新更新