Parser combinators in F#