What about using hGetContents to just read ALL of the input, as a lazy
string? Then you look through that string for success or failure. In
other words,
readACL2Answer pout = do
s <- hGetContents pout
parse s here