版博士V2.0程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463
  1. /**
  2. * @since 2.4.0
  3. */
  4. import { Apply, Apply1, Apply2, Apply2C, Apply3, Apply3C } from './Apply'
  5. import { Chain, Chain1, Chain2, Chain2C, Chain3, Chain3C } from './Chain'
  6. import { Lazy } from './function'
  7. import { Functor, Functor1, Functor2, Functor2C, Functor3, Functor3C } from './Functor'
  8. import { HKT, Kind, Kind2, Kind3, URIS, URIS2, URIS3 } from './HKT'
  9. import { Monad, Monad1, Monad2, Monad2C, Monad3, Monad3C } from './Monad'
  10. import { Pointed, Pointed1, Pointed2, Pointed2C, Pointed3, Pointed3C } from './Pointed'
  11. import { Semigroup } from './Semigroup'
  12. import * as T from './These'
  13. import These = T.These
  14. /**
  15. * @since 2.10.0
  16. */
  17. export declare function right<F extends URIS3>(
  18. F: Pointed3<F>
  19. ): <A, R, FE, E = never>(a: A) => Kind3<F, R, FE, These<E, A>>
  20. export declare function right<F extends URIS3, FE>(
  21. F: Pointed3C<F, FE>
  22. ): <A, R, E = never>(a: A) => Kind3<F, R, FE, These<E, A>>
  23. export declare function right<F extends URIS2>(F: Pointed2<F>): <A, FE, E = never>(a: A) => Kind2<F, FE, These<E, A>>
  24. export declare function right<F extends URIS2, FE>(
  25. F: Pointed2C<F, FE>
  26. ): <A, E = never>(a: A) => Kind2<F, FE, These<E, A>>
  27. export declare function right<F extends URIS>(F: Pointed1<F>): <A, E = never>(a: A) => Kind<F, These<E, A>>
  28. export declare function right<F>(F: Pointed<F>): <A, E = never>(a: A) => HKT<F, These<E, A>>
  29. /**
  30. * @since 2.10.0
  31. */
  32. export declare function left<F extends URIS3>(
  33. F: Pointed3<F>
  34. ): <E, R, FE, A = never>(e: E) => Kind3<F, R, FE, These<E, A>>
  35. export declare function left<F extends URIS3, FE>(
  36. F: Pointed3C<F, FE>
  37. ): <E, R, A = never>(e: E) => Kind3<F, R, FE, These<E, A>>
  38. export declare function left<F extends URIS2>(F: Pointed2<F>): <E, FE, A = never>(e: E) => Kind2<F, FE, These<E, A>>
  39. export declare function left<F extends URIS2, FE>(
  40. F: Pointed2C<F, FE>
  41. ): <E, A = never>(e: E) => Kind2<F, FE, These<E, A>>
  42. export declare function left<F extends URIS>(F: Pointed1<F>): <E, A = never>(e: E) => Kind<F, These<E, A>>
  43. export declare function left<F>(F: Pointed<F>): <E, A = never>(e: E) => HKT<F, These<E, A>>
  44. /**
  45. * @since 2.10.0
  46. */
  47. export declare function both<F extends URIS3>(F: Pointed3<F>): <E, A, S, R>(e: E, a: A) => Kind3<F, S, R, These<E, A>>
  48. export declare function both<F extends URIS3, R>(F: Pointed3C<F, R>): <E, A>(e: E, a: A) => Kind3<F, R, R, These<E, A>>
  49. export declare function both<F extends URIS2>(F: Pointed2<F>): <E, A, R>(e: E, a: A) => Kind2<F, R, These<E, A>>
  50. export declare function both<F extends URIS2, R>(F: Pointed2C<F, R>): <E, A>(e: E, a: A) => Kind2<F, R, These<E, A>>
  51. export declare function both<F extends URIS>(F: Pointed1<F>): <E, A>(e: E, a: A) => Kind<F, These<E, A>>
  52. export declare function both<F>(F: Pointed<F>): <E, A = never>(e: E, a: A) => HKT<F, These<E, A>>
  53. /**
  54. * @since 2.10.0
  55. */
  56. export declare function rightF<F extends URIS3>(
  57. F: Functor3<F>
  58. ): <R, FE, A, E = never>(fa: Kind3<F, R, FE, A>) => Kind3<F, R, FE, These<E, A>>
  59. export declare function rightF<F extends URIS3, FE>(
  60. F: Functor3C<F, FE>
  61. ): <R, A, E = never>(fa: Kind3<F, R, FE, A>) => Kind3<F, R, FE, These<E, A>>
  62. export declare function rightF<F extends URIS2>(
  63. F: Functor2<F>
  64. ): <FE, A, E = never>(fa: Kind2<F, FE, A>) => Kind2<F, FE, These<E, A>>
  65. export declare function rightF<F extends URIS2, FE>(
  66. F: Functor2C<F, FE>
  67. ): <A, E = never>(fa: Kind2<F, FE, A>) => Kind2<F, FE, These<E, A>>
  68. export declare function rightF<F extends URIS>(F: Functor1<F>): <A, E = never>(fa: Kind<F, A>) => Kind<F, These<E, A>>
  69. export declare function rightF<F>(F: Functor<F>): <A, E = never>(fa: HKT<F, A>) => HKT<F, These<E, A>>
  70. /**
  71. * @since 2.10.0
  72. */
  73. export declare function leftF<F extends URIS3>(
  74. F: Functor3<F>
  75. ): <R, FE, E, A = never>(fe: Kind3<F, R, FE, E>) => Kind3<F, R, FE, These<E, A>>
  76. export declare function leftF<F extends URIS3, FE>(
  77. F: Functor3C<F, FE>
  78. ): <R, E, A = never>(fe: Kind3<F, R, FE, E>) => Kind3<F, R, FE, These<E, A>>
  79. export declare function leftF<F extends URIS2>(
  80. F: Functor2<F>
  81. ): <FE, E, A = never>(fe: Kind2<F, FE, E>) => Kind2<F, FE, These<E, A>>
  82. export declare function leftF<F extends URIS2, FE>(
  83. F: Functor2C<F, FE>
  84. ): <E, A = never>(fe: Kind2<F, FE, E>) => Kind2<F, FE, These<E, A>>
  85. export declare function leftF<F extends URIS>(F: Functor1<F>): <E, A = never>(fe: Kind<F, E>) => Kind<F, These<E, A>>
  86. export declare function leftF<F>(F: Functor<F>): <E, A = never>(fe: HKT<F, E>) => HKT<F, These<E, A>>
  87. /**
  88. * @since 2.10.0
  89. */
  90. export declare function map<F extends URIS3>(
  91. F: Functor3<F>
  92. ): <A, B>(f: (a: A) => B) => <R, FE, E>(fa: Kind3<F, R, FE, These<E, A>>) => Kind3<F, R, FE, These<E, B>>
  93. export declare function map<F extends URIS3, FE>(
  94. F: Functor3C<F, FE>
  95. ): <A, B>(f: (a: A) => B) => <R, E>(fa: Kind3<F, R, FE, These<E, A>>) => Kind3<F, R, FE, These<E, B>>
  96. export declare function map<F extends URIS2>(
  97. F: Functor2<F>
  98. ): <A, B>(f: (a: A) => B) => <FE, E>(fa: Kind2<F, FE, These<E, A>>) => Kind2<F, FE, These<E, B>>
  99. export declare function map<F extends URIS2, FE>(
  100. F: Functor2C<F, FE>
  101. ): <A, B>(f: (a: A) => B) => <E>(fa: Kind2<F, FE, These<E, A>>) => Kind2<F, FE, These<E, B>>
  102. export declare function map<F extends URIS>(
  103. F: Functor1<F>
  104. ): <A, B>(f: (a: A) => B) => <E>(fa: Kind<F, These<E, A>>) => Kind<F, These<E, B>>
  105. export declare function map<F>(
  106. F: Functor<F>
  107. ): <A, B>(f: (a: A) => B) => <E>(fa: HKT<F, These<E, A>>) => HKT<F, These<E, B>>
  108. /**
  109. * @since 2.10.0
  110. */
  111. export declare function ap<F extends URIS3, E>(
  112. F: Apply3<F>,
  113. S: Semigroup<E>
  114. ): <R, FE, A>(
  115. fa: Kind3<F, R, FE, These<E, A>>
  116. ) => <B>(fab: Kind3<F, R, FE, These<E, (a: A) => B>>) => Kind3<F, R, FE, These<E, B>>
  117. export declare function ap<F extends URIS3, FE, E>(
  118. F: Apply3C<F, FE>,
  119. S: Semigroup<E>
  120. ): <R, A>(
  121. fa: Kind3<F, R, FE, These<E, A>>
  122. ) => <B>(fab: Kind3<F, R, FE, These<E, (a: A) => B>>) => Kind3<F, R, FE, These<E, B>>
  123. export declare function ap<F extends URIS2, E>(
  124. F: Apply2<F>,
  125. S: Semigroup<E>
  126. ): <FE, A>(fa: Kind2<F, FE, These<E, A>>) => <B>(fab: Kind2<F, FE, These<E, (a: A) => B>>) => Kind2<F, FE, These<E, B>>
  127. export declare function ap<F extends URIS2, FE, E>(
  128. F: Apply2C<F, FE>,
  129. S: Semigroup<E>
  130. ): <A>(fa: Kind2<F, FE, These<E, A>>) => <B>(fab: Kind2<F, FE, These<E, (a: A) => B>>) => Kind2<F, FE, These<E, B>>
  131. export declare function ap<F extends URIS, E>(
  132. F: Apply1<F>,
  133. S: Semigroup<E>
  134. ): <A>(fa: Kind<F, These<E, A>>) => <B>(fab: Kind<F, These<E, (a: A) => B>>) => Kind<F, These<E, B>>
  135. export declare function ap<F, E>(
  136. F: Apply<F>,
  137. S: Semigroup<E>
  138. ): <A>(fa: HKT<F, These<E, A>>) => <B>(fab: HKT<F, These<E, (a: A) => B>>) => HKT<F, These<E, B>>
  139. /**
  140. * @since 2.10.0
  141. */
  142. export declare function chain<M extends URIS3, E>(
  143. M: Monad3<M>,
  144. S: Semigroup<E>
  145. ): <A, R, ME, B>(
  146. f: (a: A) => Kind3<M, R, ME, These<E, B>>
  147. ) => (ma: Kind3<M, R, ME, These<E, A>>) => Kind3<M, R, ME, These<E, B>>
  148. export declare function chain<M extends URIS3, ME, E>(
  149. M: Monad3C<M, ME>,
  150. S: Semigroup<E>
  151. ): <A, R, B>(
  152. f: (a: A) => Kind3<M, R, ME, These<E, B>>
  153. ) => (ma: Kind3<M, R, ME, These<E, A>>) => Kind3<M, R, ME, These<E, B>>
  154. export declare function chain<M extends URIS2, E>(
  155. M: Monad2<M>,
  156. S: Semigroup<E>
  157. ): <A, ME, B>(f: (a: A) => Kind2<M, ME, These<E, B>>) => (ma: Kind2<M, ME, These<E, A>>) => Kind2<M, ME, These<E, B>>
  158. export declare function chain<M extends URIS2, ME, E>(
  159. M: Monad2C<M, ME>,
  160. S: Semigroup<E>
  161. ): <A, B>(f: (a: A) => Kind2<M, ME, These<E, B>>) => (ma: Kind2<M, ME, These<E, A>>) => Kind2<M, ME, These<E, B>>
  162. export declare function chain<M extends URIS, E>(
  163. M: Monad1<M>,
  164. S: Semigroup<E>
  165. ): <A, B>(f: (a: A) => Kind<M, These<E, B>>) => (ma: Kind<M, These<E, A>>) => Kind<M, These<E, B>>
  166. export declare function chain<M, E>(
  167. M: Monad<M>,
  168. S: Semigroup<E>
  169. ): <A, B>(f: (a: A) => HKT<M, These<E, B>>) => (ma: HKT<M, These<E, A>>) => HKT<M, These<E, B>>
  170. /**
  171. * @since 2.10.0
  172. */
  173. export declare function bimap<F extends URIS3>(
  174. F: Functor3<F>
  175. ): <E, G, A, B>(
  176. f: (e: E) => G,
  177. g: (a: A) => B
  178. ) => <R, FE>(fea: Kind3<F, R, FE, These<E, A>>) => Kind3<F, R, FE, These<G, B>>
  179. export declare function bimap<F extends URIS3, FE>(
  180. F: Functor3C<F, FE>
  181. ): <E, G, A, B>(
  182. f: (e: E) => G,
  183. g: (a: A) => B
  184. ) => <R>(fea: Kind3<F, R, FE, These<E, A>>) => Kind3<F, R, FE, These<G, B>>
  185. export declare function bimap<F extends URIS2>(
  186. F: Functor2<F>
  187. ): <E, G, A, B>(f: (e: E) => G, g: (a: A) => B) => <FE>(fea: Kind2<F, FE, These<E, A>>) => Kind2<F, FE, These<G, B>>
  188. export declare function bimap<F extends URIS2, FE>(
  189. F: Functor2C<F, FE>
  190. ): <E, G, A, B>(f: (e: E) => G, g: (a: A) => B) => (fea: Kind2<F, FE, These<E, A>>) => Kind2<F, FE, These<G, B>>
  191. export declare function bimap<F extends URIS>(
  192. F: Functor1<F>
  193. ): <E, G, A, B>(f: (e: E) => G, g: (a: A) => B) => (fea: Kind<F, These<E, A>>) => Kind<F, These<G, B>>
  194. export declare function bimap<F>(
  195. F: Functor<F>
  196. ): <E, G, A, B>(f: (e: E) => G, g: (a: A) => B) => (fea: HKT<F, These<E, A>>) => HKT<F, These<G, B>>
  197. /**
  198. * @since 2.10.0
  199. */
  200. export declare function mapLeft<F extends URIS3>(
  201. F: Functor3<F>
  202. ): <E, G>(f: (e: E) => G) => <R, FE, A>(fea: Kind3<F, R, FE, These<E, A>>) => Kind3<F, R, FE, These<G, A>>
  203. export declare function mapLeft<F extends URIS3, FE>(
  204. F: Functor3C<F, FE>
  205. ): <E, G>(f: (e: E) => G) => <R, A>(fea: Kind3<F, R, FE, These<E, A>>) => Kind3<F, R, FE, These<G, A>>
  206. export declare function mapLeft<F extends URIS2>(
  207. F: Functor2<F>
  208. ): <E, G>(f: (e: E) => G) => <FE, A>(fea: Kind2<F, FE, These<E, A>>) => Kind2<F, FE, These<G, A>>
  209. export declare function mapLeft<F extends URIS2, FE>(
  210. F: Functor2C<F, FE>
  211. ): <E, G>(f: (e: E) => G) => <A>(fea: Kind2<F, FE, These<E, A>>) => Kind2<F, FE, These<G, A>>
  212. export declare function mapLeft<F extends URIS>(
  213. F: Functor1<F>
  214. ): <E, G>(f: (e: E) => G) => <A>(fea: Kind<F, These<E, A>>) => Kind<F, These<G, A>>
  215. export declare function mapLeft<F>(
  216. F: Functor<F>
  217. ): <E, G>(f: (e: E) => G) => <A>(fea: HKT<F, These<E, A>>) => HKT<F, These<G, A>>
  218. /**
  219. * @since 2.10.0
  220. */
  221. export declare function match<F extends URIS3>(
  222. F: Functor3<F>
  223. ): <E, B, A>(
  224. onLeft: (e: E) => B,
  225. onRight: (a: A) => B,
  226. onBoth: (e: E, a: A) => B
  227. ) => <S, R>(ma: Kind3<F, S, R, These<E, A>>) => Kind3<F, S, R, B>
  228. export declare function match<F extends URIS3, R>(
  229. F: Functor3C<F, R>
  230. ): <E, B, A>(
  231. onLeft: (e: E) => B,
  232. onRight: (a: A) => B,
  233. onBoth: (e: E, a: A) => B
  234. ) => <S>(ma: Kind3<F, S, R, These<E, A>>) => Kind3<F, S, R, B>
  235. export declare function match<F extends URIS2>(
  236. F: Functor2<F>
  237. ): <E, B, A>(
  238. onLeft: (e: E) => B,
  239. onRight: (a: A) => B,
  240. onBoth: (e: E, a: A) => B
  241. ) => <R>(ma: Kind2<F, R, These<E, A>>) => Kind2<F, R, B>
  242. export declare function match<M extends URIS2, R>(
  243. F: Functor2C<M, R>
  244. ): <E, B, A>(
  245. onLeft: (e: E) => B,
  246. onRight: (a: A) => B,
  247. onBoth: (e: E, a: A) => B
  248. ) => (ma: Kind2<M, R, These<E, A>>) => Kind2<M, R, B>
  249. export declare function match<F extends URIS>(
  250. F: Functor1<F>
  251. ): <E, B, A>(
  252. onLeft: (e: E) => B,
  253. onRight: (a: A) => B,
  254. onBoth: (e: E, a: A) => B
  255. ) => (ma: Kind<F, These<E, A>>) => Kind<F, B>
  256. export declare function match<F>(
  257. F: Functor<F>
  258. ): <E, B, A>(
  259. onLeft: (e: E) => B,
  260. onRight: (a: A) => B,
  261. onBoth: (e: E, a: A) => B
  262. ) => (ma: HKT<F, These<E, A>>) => HKT<F, B>
  263. /**
  264. * @since 2.10.0
  265. */
  266. export declare function matchE<M extends URIS3>(
  267. M: Chain3<M>
  268. ): <E, R, ME, B, A>(
  269. onLeft: (e: E) => Kind3<M, R, ME, B>,
  270. onRight: (a: A) => Kind3<M, R, ME, B>,
  271. onBoth: (e: E, a: A) => Kind3<M, R, ME, B>
  272. ) => (ma: Kind3<M, R, ME, These<E, A>>) => Kind3<M, R, ME, B>
  273. export declare function matchE<M extends URIS3, ME>(
  274. M: Chain3C<M, ME>
  275. ): <E, R, B, A>(
  276. onLeft: (e: E) => Kind3<M, R, ME, B>,
  277. onRight: (a: A) => Kind3<M, R, ME, B>,
  278. onBoth: (e: E, a: A) => Kind3<M, R, ME, B>
  279. ) => (ma: Kind3<M, R, ME, These<E, A>>) => Kind3<M, R, ME, B>
  280. export declare function matchE<M extends URIS2>(
  281. M: Chain2<M>
  282. ): <E, ME, B, A>(
  283. onLeft: (e: E) => Kind2<M, ME, B>,
  284. onRight: (a: A) => Kind2<M, ME, B>,
  285. onBoth: (e: E, a: A) => Kind2<M, ME, B>
  286. ) => (ma: Kind2<M, ME, These<E, A>>) => Kind2<M, ME, B>
  287. export declare function matchE<M extends URIS2, ME>(
  288. M: Chain2C<M, ME>
  289. ): <E, B, A>(
  290. onLeft: (e: E) => Kind2<M, ME, B>,
  291. onRight: (a: A) => Kind2<M, ME, B>,
  292. onBoth: (e: E, a: A) => Kind2<M, ME, B>
  293. ) => (ma: Kind2<M, ME, These<E, A>>) => Kind2<M, ME, B>
  294. export declare function matchE<M extends URIS>(
  295. M: Chain1<M>
  296. ): <E, B, A>(
  297. onLeft: (e: E) => Kind<M, B>,
  298. onRight: (a: A) => Kind<M, B>,
  299. onBoth: (e: E, a: A) => Kind<M, B>
  300. ) => (ma: Kind<M, These<E, A>>) => Kind<M, B>
  301. export declare function matchE<M>(
  302. M: Chain<M>
  303. ): <E, B, A>(
  304. onLeft: (e: E) => HKT<M, B>,
  305. onRight: (a: A) => HKT<M, B>,
  306. onBoth: (e: E, a: A) => HKT<M, B>
  307. ) => (ma: HKT<M, These<E, A>>) => HKT<M, B>
  308. /**
  309. * @since 2.10.0
  310. */
  311. export declare function swap<F extends URIS3>(
  312. F: Functor3<F>
  313. ): <R, FE, E, A>(ma: Kind3<F, R, FE, These<E, A>>) => Kind3<F, R, FE, These<A, E>>
  314. export declare function swap<F extends URIS3, FE>(
  315. F: Functor3C<F, FE>
  316. ): <R, E, A>(ma: Kind3<F, R, FE, These<E, A>>) => Kind3<F, R, FE, These<A, E>>
  317. export declare function swap<F extends URIS2>(
  318. F: Functor2<F>
  319. ): <FE, E, A>(ma: Kind2<F, FE, These<E, A>>) => Kind2<F, FE, These<A, E>>
  320. export declare function swap<F extends URIS2, FE>(
  321. F: Functor2C<F, FE>
  322. ): <E, A>(ma: Kind2<F, FE, These<E, A>>) => Kind2<F, FE, These<A, E>>
  323. export declare function swap<F extends URIS>(F: Functor1<F>): <E, A>(ma: Kind<F, These<E, A>>) => Kind<F, These<A, E>>
  324. export declare function swap<F>(F: Functor<F>): <E, A>(ma: HKT<F, These<E, A>>) => HKT<F, These<A, E>>
  325. /**
  326. * @since 2.10.0
  327. */
  328. export declare function toTuple2<F extends URIS3>(
  329. F: Functor3<F>
  330. ): <E, A>(e: Lazy<E>, a: Lazy<A>) => <R, FE>(fa: Kind3<F, R, FE, These<E, A>>) => Kind3<F, R, FE, readonly [E, A]>
  331. export declare function toTuple2<F extends URIS3, FE>(
  332. F: Functor3C<F, FE>
  333. ): <E, A>(e: Lazy<E>, a: Lazy<A>) => <R>(fa: Kind3<F, R, FE, These<E, A>>) => Kind3<F, R, FE, readonly [E, A]>
  334. export declare function toTuple2<F extends URIS2>(
  335. F: Functor2<F>
  336. ): <E, A>(e: Lazy<E>, a: Lazy<A>) => <FE>(fa: Kind2<F, FE, These<E, A>>) => Kind2<F, FE, readonly [E, A]>
  337. export declare function toTuple2<F extends URIS2, FE>(
  338. F: Functor2C<F, FE>
  339. ): <E, A>(e: Lazy<E>, a: Lazy<A>) => (fa: Kind2<F, FE, These<E, A>>) => Kind2<F, FE, readonly [E, A]>
  340. export declare function toTuple2<F extends URIS>(
  341. F: Functor1<F>
  342. ): <E, A>(e: Lazy<E>, a: Lazy<A>) => (fa: Kind<F, These<E, A>>) => Kind<F, readonly [E, A]>
  343. export declare function toTuple2<F>(
  344. F: Functor<F>
  345. ): <E, A>(e: Lazy<E>, a: Lazy<A>) => (fa: HKT<F, These<E, A>>) => HKT<F, readonly [E, A]>
  346. /**
  347. * @category zone of death
  348. * @since 2.4.0
  349. * @deprecated
  350. */
  351. export interface TheseT<M, E, A> extends HKT<M, These<E, A>> {}
  352. /**
  353. * @category zone of death
  354. * @since 2.4.0
  355. * @deprecated
  356. */
  357. export interface TheseM<M> {
  358. readonly map: <E, A, B>(fa: TheseT<M, E, A>, f: (a: A) => B) => TheseT<M, E, B>
  359. readonly bimap: <E, A, N, B>(fa: TheseT<M, E, A>, f: (e: E) => N, g: (a: A) => B) => TheseT<M, N, B>
  360. readonly mapLeft: <E, A, N>(fa: TheseT<M, E, A>, f: (e: E) => N) => TheseT<M, N, A>
  361. readonly fold: <E, A, R>(
  362. fa: TheseT<M, E, A>,
  363. onLeft: (e: E) => HKT<M, R>,
  364. onRight: (a: A) => HKT<M, R>,
  365. onBoth: (e: E, a: A) => HKT<M, R>
  366. ) => HKT<M, R>
  367. readonly swap: <E, A>(fa: TheseT<M, E, A>) => TheseT<M, A, E>
  368. readonly rightM: <E, A>(ma: HKT<M, A>) => TheseT<M, E, A>
  369. readonly leftM: <E, A>(me: HKT<M, E>) => TheseT<M, E, A>
  370. readonly left: <E, A>(e: E) => TheseT<M, E, A>
  371. readonly right: <E, A>(a: A) => TheseT<M, E, A>
  372. readonly both: <E, A>(e: E, a: A) => TheseT<M, E, A>
  373. readonly toTuple: <E, A>(fa: TheseT<M, E, A>, e: E, a: A) => HKT<M, [E, A]>
  374. readonly getMonad: <E>(S: Semigroup<E>) => {
  375. readonly _E: E
  376. readonly map: <A, B>(ma: TheseT<M, E, A>, f: (a: A) => B) => TheseT<M, E, B>
  377. readonly of: <A>(a: A) => TheseT<M, E, A>
  378. readonly ap: <A, B>(mab: TheseT<M, E, (a: A) => B>, ma: TheseT<M, E, A>) => TheseT<M, E, B>
  379. readonly chain: <A, B>(ma: TheseT<M, E, A>, f: (a: A) => TheseT<M, E, B>) => TheseT<M, E, B>
  380. }
  381. }
  382. /**
  383. * @category zone of death
  384. * @since 2.4.0
  385. * @deprecated
  386. */
  387. export declare type TheseT1<M extends URIS, E, A> = Kind<M, These<E, A>>
  388. /**
  389. * @category zone of death
  390. * @since 2.4.0
  391. * @deprecated
  392. */
  393. export interface TheseM1<M extends URIS> {
  394. readonly map: <E, A, B>(fa: TheseT1<M, E, A>, f: (a: A) => B) => TheseT1<M, E, B>
  395. readonly bimap: <E, A, N, B>(fa: TheseT1<M, E, A>, f: (e: E) => N, g: (a: A) => B) => TheseT1<M, N, B>
  396. readonly mapLeft: <E, A, N>(fa: TheseT1<M, E, A>, f: (e: E) => N) => TheseT1<M, N, A>
  397. readonly fold: <E, A, R>(
  398. fa: TheseT1<M, E, A>,
  399. onLeft: (e: E) => Kind<M, R>,
  400. onRight: (a: A) => Kind<M, R>,
  401. onBoth: (e: E, a: A) => Kind<M, R>
  402. ) => Kind<M, R>
  403. readonly swap: <E, A>(fa: TheseT1<M, E, A>) => TheseT1<M, A, E>
  404. readonly rightM: <E, A>(ma: Kind<M, A>) => TheseT1<M, E, A>
  405. readonly leftM: <E, A>(me: Kind<M, E>) => TheseT1<M, E, A>
  406. readonly left: <E, A>(e: E) => TheseT1<M, E, A>
  407. readonly right: <E, A>(a: A) => TheseT1<M, E, A>
  408. readonly both: <E, A>(e: E, a: A) => TheseT1<M, E, A>
  409. readonly toTuple: <E, A>(fa: TheseT1<M, E, A>, e: E, a: A) => Kind<M, [E, A]>
  410. readonly getMonad: <E>(S: Semigroup<E>) => {
  411. readonly _E: E
  412. readonly map: <A, B>(ma: TheseT1<M, E, A>, f: (a: A) => B) => TheseT1<M, E, B>
  413. readonly of: <A>(a: A) => TheseT1<M, E, A>
  414. readonly ap: <A, B>(mab: TheseT1<M, E, (a: A) => B>, ma: TheseT1<M, E, A>) => TheseT1<M, E, B>
  415. readonly chain: <A, B>(ma: TheseT1<M, E, A>, f: (a: A) => TheseT1<M, E, B>) => TheseT1<M, E, B>
  416. }
  417. }
  418. /**
  419. * @category zone of death
  420. * @since 2.4.0
  421. * @deprecated
  422. */
  423. export declare type TheseT2<M extends URIS2, R, E, A> = Kind2<M, R, These<E, A>>
  424. /**
  425. * @category zone of death
  426. * @since 2.4.0
  427. * @deprecated
  428. */
  429. export interface TheseM2<M extends URIS2> {
  430. readonly map: <R, E, A, B>(fa: TheseT2<M, R, E, A>, f: (a: A) => B) => TheseT2<M, R, E, B>
  431. readonly bimap: <R, E, A, N, B>(fa: TheseT2<M, R, E, A>, f: (e: E) => N, g: (a: A) => B) => TheseT2<M, R, N, B>
  432. readonly mapLeft: <R, E, A, N>(fa: TheseT2<M, R, E, A>, f: (e: E) => N) => TheseT2<M, R, N, A>
  433. readonly fold: <R, E, A, B>(
  434. fa: TheseT2<M, R, E, A>,
  435. onLeft: (e: E) => Kind2<M, R, B>,
  436. onRight: (a: A) => Kind2<M, R, B>,
  437. onBoth: (e: E, a: A) => Kind2<M, R, B>
  438. ) => Kind2<M, R, B>
  439. readonly swap: <R, E, A>(fa: TheseT2<M, R, E, A>) => TheseT2<M, R, A, E>
  440. readonly rightM: <R, E, A>(ma: Kind2<M, R, A>) => TheseT2<M, R, E, A>
  441. readonly leftM: <R, E, A>(me: Kind2<M, R, E>) => TheseT2<M, R, E, A>
  442. readonly left: <R, E, A>(e: E) => TheseT2<M, R, E, A>
  443. readonly right: <R, E, A>(a: A) => TheseT2<M, R, E, A>
  444. readonly both: <R, E, A>(e: E, a: A) => TheseT2<M, R, E, A>
  445. readonly toTuple: <R, E, A>(fa: TheseT2<M, R, E, A>, e: E, a: A) => Kind2<M, R, [E, A]>
  446. readonly getMonad: <E>(S: Semigroup<E>) => {
  447. readonly _E: E
  448. readonly map: <R, A, B>(ma: TheseT2<M, R, E, A>, f: (a: A) => B) => TheseT2<M, R, E, B>
  449. readonly of: <R, A>(a: A) => TheseT2<M, R, E, A>
  450. readonly ap: <R, A, B>(mab: TheseT2<M, R, E, (a: A) => B>, ma: TheseT2<M, R, E, A>) => TheseT2<M, R, E, B>
  451. readonly chain: <R, A, B>(ma: TheseT2<M, R, E, A>, f: (a: A) => TheseT2<M, R, E, B>) => TheseT2<M, R, E, B>
  452. }
  453. }
  454. /**
  455. * @category zone of death
  456. * @since 2.4.0
  457. * @deprecated
  458. */
  459. export declare function getTheseM<M extends URIS2>(M: Monad2<M>): TheseM2<M>
  460. /** @deprecated */
  461. export declare function getTheseM<M extends URIS>(M: Monad1<M>): TheseM1<M>
  462. /** @deprecated */
  463. export declare function getTheseM<M>(M: Monad<M>): TheseM<M>