エレファント・ビジュアライザー調査記録

ビジュアルプログラミングで数式の変形を表すことを考えていくブロクです。

関数プログラミングと無限論理多項式(29)

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();