2011-11-13 15 views
13

Esiste un trucco o una funzione di preludio per verificare se una lista contiene una sottostringa/sottolista specifica?Haskell: verifica se l'elenco contiene "sottolista" specifico

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 

ho provato a scrivere uno per conto mio, ma questo è un problema banale e io non voglio reinventare la ruota.

+7

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

+0

E 'intenzionale che nel primo caso stai usando 'xyz' come se il suo tipo fosse '[a] -> [a] -> Bool' e nel secondo caso come se fosse' [[a]] -> [a] -> Bool'? Perché sarebbe piuttosto difficile trovare una funzione che consenta entrambi gli usi. – sepp2k

+0

@ sepp2k colpa mia! corretto. – NaN

risposta

28

Utilizzare isInfixOf da Data.List.

I parametri sono il contrario da quello che hai chiesto --- di solito è più leggibile usare la funzione come questa: "worl" `isInfixOf` "hello world" (restituisce True).

Problemi correlati