gpt4 book ai didi

f# - 是什么导致 F# 序列重新枚举?

转载 作者:行者123 更新时间:2023-12-04 07:09:33 25 4
gpt4 key购买 nike

我有一个解析器,它实际上是一组对一系列词法分析器标记进行操作的递归函数。

我遇到的问题是该序列似乎在递归函数调用时从头开始重新启动。给定函数 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可能会导致调用 Parse .

但是,当这种情况发生时,参数 tokens最终定位在序列的开头。

关于如何将序列保持在需要的位置的任何想法?

蒂亚

最佳答案

我认为您可能需要发布一个稍微大一点的片段,因为我并没有完全关注您。

也就是说,一个序列(IEnumerable)就是一个序列,每次你 for (foreach) 或 Seq.Whatever 时,它都会“重新迭代”这个序列。我不清楚您想要做什么,以及您期望发生什么,但是对于解析,将“ token ”表示为序列可能是“错误的”,因为您通常将 token 划分为消耗/提交区域和前瞻区域。

另请注意,您通常不希望“迭代序列”产生副作用。

关于f# - 是什么导致 F# 序列重新枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/604051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com