Si tengo dos cuerdas que utilizar una lista por comprensión para obtener el resultado deseado:lista Haskell comprensión de número variable de cuerdas
combineStrings firstStr sndStr = [ [a,b] | a <- firstStr, b <- sndStr]
Durante tres cuerdas, que usan este
combineStrings firstStr sndStr trdStr = [ [a,b,c] | a <- firstStr, b <- sndStr, c <- trdStr]
Lo que Lo que intento es obtener el mismo resultado para un número variable de cadenas. Por ejemplo, si tengo una función que toma la forma siguiente:
combineStrings :: [String] -> [String]
Estoy tratando de obtener los mismos resultados que el anterior para 2, 3 ... n listas ... He intentado varias formas, como este uno
combineStrings [] = []
combineStrings (hd:tl) = [ a:b | a <- hd, b <- combineStrings tl]
pero esto falla debido a [] en la primera cláusula. ¿Alguien puede ayudarme a escribir esto, por favor?
Como regla general, puede tratar de hacer tipos lo más generales posible. Aquí su código no es específico para cadenas, y se puede usar para todas las listas, por lo que puede escribir 'combineStrings :: [[a]] -> [[a]]'. Entonces, la primera línea de la respuesta de undur_gongor puede escribirse 'combineStrings [] = [[]]'. También puede intentar escribir 'combineStrings' utilizando' foldr', ya que se ajusta al patrón de plegado. – sdcvvc