カウンター イミュータブル - Gushwell's F# Programming Diary

タグの表示

すべてのタグ » イミュータブル (RSS)

F#:mutableなval フィールド

type Point = val X : int val Y : int new (x,y) = { X = x; Y = y } new () = new Point(0, 0) というクラスに対して、 let a = new Point(10,20) a.X = 20 // error a.Y = 30 // error とフィールドの値を変更しようとしたら、コンパイルエラーになりました。 F#はクラスについても、不変がデフォルトなんですね。 まだまだ、僕の頭はC#のままみたいです。 type Point...

F#: 再帰処理

さて、関数、if, for , while などが書けるようになったので、何か、初心者が書くような簡単なプログラムを書いてみることにします。 1からその数値までの総和を求めるプログラムを書いてみました。関数SumTotalを定義し、キーボードから読み込んだ数値を、SumTotalに渡すものとします。 #light let SumTotal n = let mutable ttl = 0 for i = 1 to n do ttl <- ttl + i ttl let s = stdin.ReadLine...

F#: イミュータブル

これまで、あえてこの話題を避けていたのですが、F#で、注意しなくていけないのは、 let x = 10 let y = 5 let x = x + y // コンパイルエラー のように、変数に値を再代入することができないことです。 一度、変数に値を代入すると、それ以降、再代入することができません。 F#の変数はいわゆるイミュータブルってやつですね。 今までの手続き型言語(オブジェクト指向も含む)に慣れていると、すべてがイミュータブルで どうやってプログラミングできるんだろうって疑問がわくんですよね。 だって...