This is a direct transliteration into F# of Graham Hutton's Haskell parser combinators library from chapter 8 of his book Programming in Haskell.
It's not always quite idiomatic F# style, but I tried to stay pretty close to the code in the book.
To run: Open solution, restore NuGet packages, run NUnit tests.