
On Wednesday 07 March 2007 17:16, cornmouse wrote:
I have a txt file, which contains a paragraph. I am trying to read the file, and pass the contents of the file as a string to another function called "createIndex". "createIndex" is a function to generate index of the input string.
Below is my code to read the file :
main :: IO () main = do putStr "Enter input file name.txt: " filename <- getLine content <- readFile filename createIndex content
createIndex :: String -> [ ([Int], String) ] createIndex {- contents of the function... -}
I am using Hugs compiler, when i execute, i got an error Type error in generator *** Term : showString content *** Type : [Char] -> [Char] *** Does not match : IO a
IO>
I know the data type doesn't match. How do i go about this?
What do you want to do with the index? Maybe you want to print the index out, in which case change createIndex content to putStrLn (show (createIndex content)) That'll work because show :: (Show a) => a -> String turns your index into a string, and then putStrLn :: String -> IO () takes the string and carries out an IO computation, that has a side effect of putting some text on screen, and returns a value of (), which matches the type of main. Daniel