本「Expert F# 3.0」には、多項式を 'lex' および 'parse' するテキスト解析の例があります。私はそれを少し理解しようとしていました(書かれたコードについての説明はありませんでした)、そして私はこのような機能に出くわしました:
let parseIndex src =
match tryToken src with
| Some(Hat,src) ->
match tryToken src with
| Some(Int num,src) -> (num,src)
| _ -> failwith "expected an int after ^"
| _ -> (1,src)
関数を使用する
let tryToken (src:TokenStream) =
match src with
| head::rest -> Some(head, rest)
| _ -> None
関数parseIndexはパラメーターsrcを使用し、コードが複数回使用して進行するtryTokenたびに、返さsrcれるものは何らかの形で別のものですが、関数はまだその名前を使用しています!
私の質問は次のとおりです。parseIndexここで実際に何をしているのsrcですか? 2 番目のパターン マッチングでsrcは、 によって指定された定義値であるかのように使用されますが、tryTokentryTokenを見ると、パターン マッチングを使用するたびに同じ結果が得られるはずです。
Hatと、Intご覧のとおり、 の結合ケースですToken。type TokenStream = Token list