クリスマスイブらしいよ!
私は家で引きこもってるけど!
State
状態を保持する計算に用いられます。
Stateは!で値を、~>で状態を、applyで両方をとりだせます。
値、状態を取り出すときには、初期状態を与えなければなりません。
値や状態を操作するための関数はStatesに定義されています。
init
状態で値を初期化します。
put
状態を上書きします。
gets
状態から値を更新します。
modify
状態から状態を更新します。
state
状態から値と状態を更新します。
IdentityにもStateを作る関数が定義されています。
state
呼び出し元を初期値にします。
constantState
呼び出し元を初期値にし、初期状態を与えます。
State#withsは入力される状態を更新します。
StateT
モナド変換子版もあります。
mapsにより別のモナドにmapすることもできます。
Writerは結合していくことしか出来ませんでしたが、Stateではもう少し自由度が高いというイメージです。
ScalaはvarがあるからStateモナドとかいらないのでは?と思っていましたが、実際に調べて書いてみると可変な参照とはまた違ったもので、これはこれで使い方がありそうです。
STモナドはいりません。
0 件のコメント:
コメントを投稿