F# 在映射时使用以前评估的解决方案(状态)
F# use previous evaluated solution (state) while mapping
我正在评估 F# 中的迭代算法,其中当前时间步需要前一个时间步的解(状态)。在第一次迭代的情况下,初始条件应该是可设置的,即设置为 0.
这类似于:
let answer = List.map (fun x -> x + previousAnswer) 0 someData
我想要的类似于折叠,但之前的解决方案(状态)不是累积的,而是简单的可访问的。
执行此类操作的正确功能方法是什么?
谢谢!
fold
即returns所有中间值作为一个新的序列传统上称为scan
。事实上,F# 标准库确实为所有基本集合提供了 scan
的实现:
let answers = List.scan (fun previousAnswer x -> x + previousAnswer) 0 someData
(另请注意,在您的示例中,您翻转了 map
个参数 - 它应该是 0 someData
,而不是 someData 0
)
我正在评估 F# 中的迭代算法,其中当前时间步需要前一个时间步的解(状态)。在第一次迭代的情况下,初始条件应该是可设置的,即设置为 0.
这类似于:
let answer = List.map (fun x -> x + previousAnswer) 0 someData
我想要的类似于折叠,但之前的解决方案(状态)不是累积的,而是简单的可访问的。 执行此类操作的正确功能方法是什么?
谢谢!
fold
即returns所有中间值作为一个新的序列传统上称为scan
。事实上,F# 标准库确实为所有基本集合提供了 scan
的实现:
let answers = List.scan (fun previousAnswer x -> x + previousAnswer) 0 someData
(另请注意,在您的示例中,您翻转了 map
个参数 - 它应该是 0 someData
,而不是 someData 0
)