Hola el siguiente código es un programa de intercambio de palabras. Le permite buscar a través de una lista de palabras que coincidan con un prefijo, sufijo y algunas letras. Mi pregunta es, en lugar de usar la lista en la parte inferior, quiero usar un archivo de texto externo que contenga las palabras y cargarlo en la lista. ¿Cómo voy a hacer esto?Haskell carga el archivo de texto externo en la lista
count :: String -> String -> Int
count _[] = 0
count [] _ = 0
count (x:xs) square
|x `elem` square = 1 + count xs (delete x square)
|otherwise = count xs square
check :: String -> String -> String -> String -> Bool
check prefix suffix word square
| (length strippedWord) == (count strippedWord square) = True
| otherwise = False
where
strippedWord = drop (length prefix) (take ((length word) - (length suffix)) word)
wordfeud :: String -> String -> String -> [String]
wordfeud a b c = test1
where
test =["horse","chair","chairman","bag","house","mouse","dirt","sport"]
test1 = [x| x <- test, a `isPrefixOf` x, b `isSuffixOf` x, check a b x c]
Dos consejos cortos con respecto a su código: 1. En la aplicación de función Haskell tiene una precedencia más fuerte que los operadores de infijo. Es decir, una expresión como 'longitud strippedWord == count strippedWord square' es equivalente a' (length strippedWord) == (count strippedWord square) '. 2. En la función 'check' el resultado de la función es el valor de la verificación de igualdad. Por lo tanto, puede reemplazar el protector (la parte con las barras verticales) por el control de igualdad. –
¿Quiere decir que puedo reemplazar el protector con solo esta línea "length strippedWord == count strippedWord square = True"? – tutu
Disculpe por no ser exacto. Quise decir que puede usar 'verifique prefijo sufijo palabra cuadrado = longitud strippedWord == count strippedWord square'. Es decir, el resultado de una aplicación de 'check' es el resultado de la aplicación de' == '. –