http://dev.stephendiehl.com/fun/002_parsers.html
as a basis for discussion.
Now you want to "operate on (String,[String]) pairs", so the Parser newtype must now look like this:
type MyInput = (String,[String])
newtype MyParser a = MyParser { parse :: MyInput -> [(a,MyInput)] }
Is this what you have in mind?
-- Kim-Ee