入力のコレクションを取り、出力のリストを作成するブートストラップ アルゴリズムを F# で記述しようとしています。前の要素のみを使用する必要がある場合は、 recursion を使用するのは簡単です:
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
ただし、以前に作成した要素を使用したい場合 (たとえば、新しい値の平均を以前の値として渡したい場合)、内部関数でそれらにアクセスするにはどうすればよいでしょうか? 外側の関数でコレクションを作成し、内側の関数でそれを埋めますか? もしそうなら、私はそれを変更可能にする必要がありますか?