Haskellでまともなので、F#でうまくやっていくと思っていましたが、単純な問題に悩まされているような気がします。次のような単純なJSONパーサーの解析コードがあります。
let rec parseObject tokens = function
| '"' :: cs -> parseString tokens cs
| ':' :: cs -> parseValue tokens cs
| '}' :: cs -> tokens, cs
...
let rec parseValue tokens = function
| c :: cs when Char.IsWhiteSpace(c) -> parseValue tokens cs
| '{' :: cs -> parseObject tokens cs
...
parseObjectはparseValueを認識していないため、これは機能しません。それらを元に戻すことはできません。さもないと、逆の問題が発生します。それで、私はここで何をすべきでしょうか?