IndexedStateT

Stateモナドのトランスフォーマーです。名前の通り実際のclassはIndexedモナドになっていますが、最初のうちは単なる普通のStateモナドトランスフォーマーと思っておけばいいでしょう。

基本的な使い方にはあまり変更はありませんが、7.1と7.2で内部構造が変更されています。 内部構造の変更とは、スタックオーバーフローしないようにするための変更です。

実際の7.2時点のIndexedStateTの定義は以下のようなものです。

sealed abstract class IndexedStateT[S1, S2, F[_], A] { self =>
  // その他のメソッド省略
}

その他に、関連するStateTStatescalazのpackage objectにtype aliasとして定義されています。

type StateT[S, F[_], A] = IndexedStateT[S, S, F, A]

type IndexedState[S1, S2, A] = IndexedStateT[S1, S2, Id, A]

type State[S, A] = StateT[S, Id, A]

このように、モナドトランスフォーマーのaliasとしてモナドを定義するのは、Scalaz内の他のモナドトランスフォーマーでも共通することですし、Haskellにおいてもそのように定義されることが多いです。

results matching ""

    No results matching ""