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
我试图自己写一个,但这是一个微不足道的问题,我不想重新发明*。
答
使用来自Data.List的isInfixOf
。
这些参数是从你所要求的其他方式---它通常是最可读的使用这样的功能:"worl" `isInfixOf` "hello world"
(返回True)。
lmhtfy:http://haskell.org/hoogle/?q=[a]+-%3E+[a]+-%3E+Bool –
是否有意在第一种情况下使用'xyz'就好像它的类型是[a] - > [a] - > Bool'并且在第二种情况下就好像它是'[[a]] - > [a] - > Bool'?因为找到一个允许两种用法的函数是相当困难的。 – sepp2k
@ sepp2k我的错!纠正。 – NaN