From my experience it will often return a partial. The most common case for me is when I use the many combinator to match a list of n items. When it reaches the end of the n items, there might be more, so it returns "Partial _". At that point I could just feed it an empty string to get the result and let it know that I'm done, but since I have been only parsing whole files I usually just use "parseOnly :: Parser a -> Either String a" (I think that's the type). parseOnly is basically what you are talking about. It only returns a value when it's done, or a failure. It doesn't return the rest of the string though. For that I think you'll have to use parse and feed it an empty string if you want to force a Partial to finish.
Another way to force it to finish is to just tack something on the end of your input that it won't parse properly. When testing I found myself adding extra spaces/newlines at the end just to force this behavior.
Drew Haven
drew....@gmail.com