1
+ package kategory
2
+
3
+ object ObservableWMonadInstanceImplicits {
4
+ @JvmStatic
5
+ fun instance (): ObservableWFlatMonadInstance = ObservableWFlatMonadInstanceImplicits .instance()
6
+ }
7
+
8
+ object ObservableWMonadErrorInstanceImplicits {
9
+ @JvmStatic
10
+ fun instance (): ObservableWFlatMonadErrorInstance = ObservableWFlatMonadErrorInstanceImplicits .instance()
11
+ }
12
+
13
+ interface ObservableWFlatMonadInstance :
14
+ ObservableWApplicativeInstance ,
15
+ Monad <ObservableWHK > {
16
+ override fun <A , B > ap (fa : ObservableWKind <A >, ff : ObservableWKind <(A ) -> B >): ObservableW <B > =
17
+ fa.ev().ap(ff)
18
+
19
+ override fun <A , B > flatMap (fa : ObservableWKind <A >, f : (A ) -> ObservableWKind <B >): ObservableWKind <B > =
20
+ fa.ev().flatMap { f(it).ev() }
21
+
22
+ override fun <A , B > tailRecM (a : A , f : (A ) -> ObservableWKind <Either <A , B >>): ObservableWKind <B > =
23
+ f(a).ev().flatMap {
24
+ it.fold({ tailRecM(a, f).ev() }, { pure(it).ev() })
25
+ }
26
+ }
27
+
28
+ object ObservableWFlatMonadInstanceImplicits {
29
+ @JvmStatic
30
+ fun instance (): ObservableWFlatMonadInstance = object : ObservableWFlatMonadInstance {}
31
+ }
32
+
33
+ interface ObservableWFlatMonadErrorInstance :
34
+ ObservableWFlatMonadInstance ,
35
+ MonadError <ObservableWHK , Throwable > {
36
+ override fun <A > raiseError (e : Throwable ): ObservableW <A > =
37
+ ObservableW .raiseError(e)
38
+
39
+ override fun <A > handleErrorWith (fa : ObservableWKind <A >, f : (Throwable ) -> ObservableWKind <A >): ObservableW <A > =
40
+ fa.ev().handleErrorWith { f(it).ev() }
41
+ }
42
+
43
+ object ObservableWFlatMonadErrorInstanceImplicits {
44
+ @JvmStatic
45
+ fun instance (): ObservableWFlatMonadErrorInstance = object : ObservableWFlatMonadErrorInstance {}
46
+ }
47
+
48
+ interface ObservableWConcatMonadInstance :
49
+ ObservableWApplicativeInstance ,
50
+ Monad <ObservableWHK > {
51
+ override fun <A , B > ap (fa : ObservableWKind <A >, ff : ObservableWKind <(A ) -> B >): ObservableW <B > =
52
+ fa.ev().ap(ff)
53
+
54
+ override fun <A , B > flatMap (fa : ObservableWKind <A >, f : (A ) -> ObservableWKind <B >): ObservableW <B > =
55
+ fa.ev().concatMap { f(it).ev() }
56
+
57
+ override fun <A , B > tailRecM (a : A , f : (A ) -> ObservableWKind <Either <A , B >>): ObservableW <B > =
58
+ f(a).ev().concatMap {
59
+ it.fold({ tailRecM(a, f).ev() }, { pure(it).ev() })
60
+ }
61
+ }
62
+
63
+ object ObservableWConcatMonadInstanceImplicits {
64
+ @JvmStatic
65
+ fun instance (): ObservableWConcatMonadInstance = object : ObservableWConcatMonadInstance {}
66
+ }
67
+
68
+ interface ObservableWConcatMonadErrorInstance :
69
+ ObservableWConcatMonadInstance ,
70
+ MonadError <ObservableWHK , Throwable > {
71
+ override fun <A > raiseError (e : Throwable ): ObservableW <A > =
72
+ ObservableW .raiseError(e)
73
+
74
+ override fun <A > handleErrorWith (fa : ObservableWKind <A >, f : (Throwable ) -> ObservableWKind <A >): ObservableW <A > =
75
+ fa.ev().handleErrorWith { f(it).ev() }
76
+ }
77
+
78
+ object ObservableWConcatMonadErrorInstanceImplicits {
79
+ @JvmStatic
80
+ fun instance (): ObservableWConcatMonadErrorInstance = object : ObservableWConcatMonadErrorInstance {}
81
+ }
82
+
83
+ interface ObservableWSwitchMonadInstance :
84
+ ObservableWApplicativeInstance ,
85
+ Monad <ObservableWHK > {
86
+ override fun <A , B > ap (fa : ObservableWKind <A >, ff : ObservableWKind <(A ) -> B >): ObservableW <B > =
87
+ fa.ev().ap(ff)
88
+
89
+ override fun <A , B > flatMap (fa : ObservableWKind <A >, f : (A ) -> ObservableWKind <B >): ObservableW <B > =
90
+ fa.ev().switchMap { f(it).ev() }
91
+
92
+ override fun <A , B > tailRecM (a : A , f : (A ) -> ObservableWKind <Either <A , B >>): ObservableW <B > =
93
+ f(a).ev().switchMap {
94
+ it.fold({ tailRecM(a, f).ev() }, { pure(it).ev() })
95
+ }
96
+ }
97
+
98
+ object ObservableWSwitchMonadInstanceImplicits {
99
+ @JvmStatic
100
+ fun instance (): ObservableWSwitchMonadInstance = object : ObservableWSwitchMonadInstance {}
101
+ }
102
+
103
+ interface ObservableWSwitchMonadErrorInstance :
104
+ ObservableWSwitchMonadInstance ,
105
+ MonadError <ObservableWHK , Throwable > {
106
+
107
+ override fun <A > raiseError (e : Throwable ): ObservableW <A > =
108
+ ObservableW .raiseError(e)
109
+
110
+ override fun <A > handleErrorWith (fa : ObservableWKind <A >, f : (Throwable ) -> ObservableWKind <A >): ObservableW <A > =
111
+ fa.ev().handleErrorWith { f(it).ev() }
112
+ }
113
+
114
+ object ObservableWSwitchMonadErrorInstanceImplicits {
115
+ @JvmStatic
116
+ fun instance (): ObservableWSwitchMonadErrorInstance = object : ObservableWSwitchMonadErrorInstance {}
117
+ }
0 commit comments