現在のタイムステップが前のタイムステップの解(状態)を必要とするF#の反復アルゴリズムを評価しています。F#マッピング中に以前に評価された解(状態)を使用する
let answer = List.map (fun x -> x + previousAnswer) 0 someData
私がしたいことは折り目が、以前のソリューション(の状態)に似ています:最初の繰り返しの場合、初期条件は、これはに類似しただろうつまり0
に設定可能でなければなりません蓄積されるのではなく、単にアクセス可能である。 このような操作を行う正しい機能的な方法は何ですか?
ありがとうございます!
[ '
(それは
0 someData
、ないsomeData 0
する必要がありますまた、あなたの例では、あなたが反転しmap
引数を持っていることに注意してください)。そして実際、F#の標準ライブラリは、すべての基本的なコレクションのためのscan
の実装を提供しませんSeq.unfold'](https://msdn.microsoft.com/en-us/library/ee340363.aspx)? –[Seq.reduce](https://msdn.microsoft.com/en-us/library/ee353740.aspx)? –
'List.map'が正しく初期化されないのはなぜですか?関数 '(fun x - > x + previousAnswer)'と開始リスト 'List.map'のシグネチャは'( 'T - >' U) - > 'T list - > 'U list' 'someData 0'ではなく' T list'ですか? –