2011-11-13 16 views
13

¿Hay una función de truco o preludio para comprobar si una lista contiene una subcadena/sublista específica?Haskell: prueba si la lista contiene una "sublista" específica

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 

Traté de escribir uno por mi cuenta, pero esto es un problema trivial y no quiero reinventar la rueda.

+7

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

+0

¿Es intencional que en el primer caso estés usando 'xyz' como si su tipo fuera '[a] -> [a] -> Bool' y en el segundo caso como si fuera' [[a]] -> [a] -> Bool'? Porque sería bastante difícil encontrar una función que permita ambos usos. – sepp2k

+0

@ sepp2k ¡Mi culpa! corregido – NaN

Respuesta

28

Use isInfixOf de Data.List.

Los parámetros son al revés de lo que solicitas --- por lo general es más legible usar la función de esta manera: "worl" `isInfixOf` "hello world" (devuelve True).

Cuestiones relacionadas