@@ -95,20 +95,39 @@ object StateTSemigroupKInstanceImplicits {
95
95
}
96
96
}
97
97
98
- interface StateTMonadCombine <F , S > : MonadCombine <StateTKindPartial <F , S >>, StateTMonad <F , S >, StateTSemigroupK <F , S > {
99
- override fun F (): MonadCombine <F >
100
- override fun G (): MonadCombine <F > = F ()
98
+ interface StateTMonadCombineInstance <F , S > : MonadCombine <StateTKindPartial <F , S >>, StateTMonadInstance <F , S >, StateTSemigroupKInstance <F , S > {
101
99
102
- override fun <A > empty (): StateT <F , S , A > = liftT(F ().empty())
100
+ override fun MF (): MonadCombine <F >
101
+ override fun SF (): SemigroupK <F > = MF ()
103
102
104
- fun <A > liftT (ma : HK <F , A >): StateT <F , S , A > = StateT (F (), F ().pure({ s: S -> F ().map(ma, { a: A -> s toT a }) }))
103
+ override fun <A > empty (): HK <StateTKindPartial <F , S >, A> = liftT(MF ().empty())
104
+
105
+ fun <A > liftT (ma : HK <F , A >): StateT <F , S , A > = StateT (MF ().pure({ s: S -> MF ().map(ma, { a: A -> s toT a }) }))
106
+ }
107
+
108
+ object StateTMonadCombineInstanceImplicits {
109
+ @JvmStatic
110
+ fun <F , S > instance (MCF : MonadCombine <F >): StateTMonadCombineInstance <F , S > = object : StateTMonadCombineInstance <F , S > {
111
+ override fun FF (): Functor <F > = MCF
112
+ override fun MF (): MonadCombine <F > = MCF
113
+
114
+ }
105
115
}
106
116
107
- interface StateTMonadError <F , S , E > : StateTMonad <F , S >, MonadError <StateTKindPartial <F , S >, E > {
108
- override fun F (): MonadError <F , E >
117
+ interface StateTMonadErrorInstance <F , S , E > : StateTMonadInstance <F , S >, MonadError <StateTKindPartial <F , S >, E > {
118
+ override fun MF (): MonadError <F , E >
109
119
110
- override fun <A > raiseError (e : E ): StateT < F , S , A > = StateT .lift(F ().raiseError(e), F ())
120
+ override fun <A > raiseError (e : E ): HK < StateTKindPartial < F , S > , A> = StateT .lift(MF ().raiseError(e), MF ())
111
121
112
122
override fun <A > handleErrorWith (fa : HK <StateTKindPartial <F , S >, A >, f : (E ) -> HK <StateTKindPartial <F , S >, A >): StateT <F , S , A > =
113
- StateT (F (), F () .pure({ s -> F ().handleErrorWith(fa.runM(s) , { e -> f(e).runM(s) }) }))
123
+ StateT (MF () .pure({ s -> MF ().handleErrorWith(fa.runM(s, MF ()) , { e -> f(e).runM(s, MF () ) }) }))
114
124
}
125
+
126
+ object StateTMonadErrorImplicits {
127
+ @JvmStatic
128
+ fun <F , S , E > instance (ME : MonadError <F , E >): StateTMonadErrorInstance <F , S , E > = object : StateTMonadErrorInstance <F , S , E > {
129
+ override fun FF (): Functor <F > = ME
130
+ override fun MF (): MonadError <F , E > = ME
131
+ }
132
+ }
133
+
0 commit comments