私は、事実上、一連のレクサートークンで動作する再帰関数のセットであるパーサを持っています。F#シーケンスを再列挙する原因は何ですか?
私が遭遇している問題は、シーケンスが再帰関数呼び出しの最初から再開しているようだということです。 Parse
への呼び出しをもたらすことができる機能Parse
let restricted = Seq.take_while token_search tokens
let compiled_nodes = Seq.fold (fun list (next: Lexer.Token) -> list @ parse_token this restricted next) [] restricted
機能parse_token
ために、以下のスケルトン定義を考えます。
しかし、この場合、パラメータtokens
はシーケンスの先頭に配置されます。
シーケンスをどのように配置する必要がありますか?
TIA
あなたは間違いありません。私は質問を掲示した後にそれを認識し、問題が何であるかを理解しました。私は間違ったアプローチだった共有IEnumeratorに相当するものを構築しようとしていました。私はリストの上にそれを構築し、消費されていない残りの部分を渡した。 – kolosy