用列表搜索列表的列表

奥斯汀·乔根森(Austin Jorgensen)

我在一些字符串理解列表中遇到一些麻烦。在下面的代码中,我有一个称为字典的字符串列表(我们可以考虑将其视为全局),以及一个搜索字符串列表(作为输入)。代码在这里:

simpleSearch :: [String] -> [[String]]
simpleSearch a = [z | z <- dictionary, elem a z]

早些时候,我尝试如上所述创建基于zipWith代码的搜索,但是没有骰子:

search' :: [a] -> [[a]] -> [[a]]  
search' _ [] = []
search' [] _ = []
search' (x:xs) (y:ys)   
    | elem x y  = x : search' x ys  
    | otherwise = search' xs ys 

我想做的是在列表“ a”中的每个字符串中搜索双重列表“ dictionary” /“ z”,然后返回包含该字符串的完整列表。因此字典可能包含[[“ b”,“ c”],[“ d”,“ e”],[“ f”,“ g”]]]之类的内容,列表'a'可能包含[“ b”,“ d“],然后我会回来[[” b“,” c“],[” d“,” e“]]。谢谢!

埃里克

您的问题在这里:

...
  | elem x y  = x : search' x ys
  | otherwise = search' xs ys

在第一种情况下,您使用呼叫search'x在第二种情况下使用xs但是xxs具有不同的类型-xs是的列表x

您需要像下面这样构造迭代:

search :: Eq a => [a] -> [[a]] -> [[a]]
search [] _ = []
search (x:xs) ys = (go x ys) ++ search xs ys

go类型的辅助函数在哪里go :: Eq a => a -> [[a]] -> [[a]]

go函数负责查找包含just的所有列表xsearch函数负责遍历列表xs并串联所有go调用的结果

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章