我正在尝试在 F# 中编写一个引导算法,该算法采用一组输入并创建一个输出列表。如果我只需要使用前一个元素,那么使用递归很简单:
let buildElement head previous =
// do something to create new float
1.0
let buildList inputs =
let rec bootstrap elements previous =
let addElement head tail =
let newElement = buildElement head previous
newElement :: bootstrap tail newElement
match inputs with
| [] -> []
| h::t -> addElement h t
bootstrap inputs 1.0
但是,如果我想使用以前创建的元素(例如,我想将新值的平均值作为以前的值传递),我如何在内部函数中访问它们?我是否在外部函数中创建一个集合并在内部函数中填充它?如果是这样,我是否需要使其可变?