
My task is to write a parser for some language (TSG). I'm using an UU_Parsing library. I wrote that parser even tested it by using some example provided, but I have problems with using my parser. I wrote a function:
test :: [Char] -> IO () test inp = do res <- parseIO pTSG inp print res
parseIO :: InputState a b => AnaParser a Pair b c -> a b -> IO c is provided by the library, pTSG is my parser and inp is a String that I'm parsing. How can I use that function "test" while using readFile? Is it something like:
test1 file = do inp <- readFile file test inp
Why should I use that "do" thing? What is so "magical" in it? PS: Please, don't say that I'm stupid, I just have problem with understanding IO/Monad part, besides that is just me second week of Haskell... :) PS1: "Haskell: The Craft of Functional Programming" didn't make that part clear to me. That's why I'm writing... -- Pavel Zhbanov