本「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