F# の例(5)
前回の F# 版では UnfoldL 関数を作成しましたが、Seq.unfold 関数を使えば良かったようです。
NextDigitAndNumbers は以下のように変更します。値に Some がついています。
let NextDigitAndNumbers (numbers: Numbers): (int * Numbers) option = let numbers_copy = numbers.Copy() let dd = numbers_copy.GetNextDecimalDigit Some (dd, numbers_copy)
Calc クラスの IterateServer メソッドは以下のようになります。Seq.unfold に代えて UnfoldL を使うように変更していたのですが、また Seq.unfold を使うように変更します。
member this.IterateServer(): string = let number: LongDecimal = new LongDecimal() let square_difference: LongDecimal = new LongDecimal(3) let init_numbers: Numbers = new Numbers(number, square_difference, 0) let dec = Seq.toList (Seq.take count (Seq.unfold NextDigitAndNumbers init_numbers)) (new LongDecimal(dec)).Print();