Vivian McPhail wrote:
When I run my main function I get an error:
The prompt does not wait for user input and thus my parser fails with an empty head.
Is there a switch to not echo to the console? Is this the problem? It happens in both Hugs and GHC
main :: IO () main = do putStr "sentence? " input <- getLine case input of "quit" -> putStr "bye.\n" _ -> do let res = get_result $ proof $ do_proof $ getInput input in if res == Nothing then putStr ("-> Nothing\n") else putStr ("-> " ++ (show $ unJust res) ++ "\n") main
The problem isn't in the code above, so it must lie in one of the functions which you don't show. For comparison, the following code works (from within Hugs and ghci):
main :: IO () main = do putStr "sentence? " input <- getLine case input of "quit" -> putStr "bye.\n" _ -> do putStrLn input main
However, for it to work when compiled with ghc, you need to add "hFlush stdout" after printing the prompt (hugs and ghci make stdout unbuffered, but it will be line-buffered for a compiled program). -- Glynn Clements <glynn.clements@virgin.net>