Haskell:测试列表是否包含特定的“子列表”

问题描述:

是否有一个技巧或前奏函数来测试列表是否包含特定的子字符串/子列表?Haskell:测试列表是否包含特定的“子列表”

xyz :: [a] -> [a] -> Bool 
xyz "hello world" "worl" -> True 
xyz [1,2,3,4,5,6,7,8,1,2,3,4,5] [7,8,1] -> True 

我试图自己写一个,但这是一个微不足道的问题,我不想重新发明*。

+7

lmhtfy:http://haskell.org/hoogle/?q=[a]+-%3E+[a]+-%3E+Bool –

+0

是否有意在第一种情况下使用'xyz'就好像它的类型是[a] - > [a] - > Bool'并且在第二种情况下就好像它是'[[a]] - > [a] - > Bool'?因为找到一个允许两种用法的函数是相当困难的。 – sepp2k

+0

@ sepp2k我的错!纠正。 – NaN

使用来自Data.List的isInfixOf

这些参数是从你所要求的其他方式---它通常是最可读的使用这样的功能:"worl" `isInfixOf` "hello world"(返回True)。