#list #search #haskell #substring #sublist
#Список #Поиск #haskell #подстрока #подсписок
Вопрос:
Есть ли уловка или функция prelude для проверки, содержит ли список определенную подстроку / подсписок?
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
Я пытался написать его самостоятельно, но это тривиальная проблема, и я не хочу изобретать велосипед.
Комментарии:
1. lmhtfy: [a] -> Bool» rel=»nofollow noreferrer»> haskell.org/hoogle/?q =[a] -> [a] -> Bool
2. Намеренно ли вы используете в первом случае,
xyz
как если бы его тип был[a] -> [a] -> Bool
, а во втором случае, как если бы это было[[a]] -> [a] -> Bool
? Потому что было бы довольно сложно найти функцию, которая допускает оба варианта использования.3. Я просто хотел бы добавить к ответу dave4420, что вы можете найти эти функции через [a] -> Bool» rel=»nofollow noreferrer»> hoogle (isInfixOf — это первое попадание).
Ответ №1:
Используйте isInfixOf
из Data.List.
Параметры противоположны тем, которые вы просили — обычно наиболее удобно использовать функцию, подобную этой: "worl" `isInfixOf` "hello world"
(возвращает True).