版博士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.

EitherT.d.ts 28 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667
  1. /**
  2. * The error monad transformer. It can be used to add error handling to other monads.
  3. *
  4. * The `of` function yields a successful computation, while `chain` sequences two subcomputations, failing on the first error.
  5. *
  6. * @since 2.0.0
  7. */
  8. import { ApplicativeComposition12, ApplicativeComposition22, ApplicativeCompositionHKT2 } from './Applicative'
  9. import { Apply, Apply1, Apply2, Apply2C, Apply3, Apply3C } from './Apply'
  10. import { Chain, Chain1, Chain2, Chain2C, Chain3, Chain3C } from './Chain'
  11. import * as E from './Either'
  12. import { Lazy } from './function'
  13. import { Functor, Functor1, Functor2, Functor2C, Functor3, Functor3C } from './Functor'
  14. import { HKT, Kind, Kind2, Kind3, URIS, URIS2, URIS3 } from './HKT'
  15. import { Monad, Monad1, Monad2, Monad2C, Monad3, Monad3C } from './Monad'
  16. import { Pointed, Pointed1, Pointed2, Pointed2C, Pointed3, Pointed3C } from './Pointed'
  17. import { Semigroup } from './Semigroup'
  18. import Either = E.Either
  19. /**
  20. * @since 2.10.0
  21. */
  22. export declare function right<F extends URIS3>(
  23. F: Pointed3<F>
  24. ): <A, R, FE, E = never>(a: A) => Kind3<F, R, FE, Either<E, A>>
  25. export declare function right<F extends URIS3, FE>(
  26. F: Pointed3C<F, FE>
  27. ): <A, R, E = never>(a: A) => Kind3<F, R, FE, Either<E, A>>
  28. export declare function right<F extends URIS2>(F: Pointed2<F>): <A, FE, E = never>(a: A) => Kind2<F, FE, Either<E, A>>
  29. export declare function right<F extends URIS2, FE>(
  30. F: Pointed2C<F, FE>
  31. ): <A, E = never>(a: A) => Kind2<F, FE, Either<E, A>>
  32. export declare function right<F extends URIS>(F: Pointed1<F>): <A, E = never>(a: A) => Kind<F, Either<E, A>>
  33. export declare function right<F>(F: Pointed<F>): <A, E = never>(a: A) => HKT<F, Either<E, A>>
  34. /**
  35. * @since 2.10.0
  36. */
  37. export declare function left<F extends URIS3>(
  38. F: Pointed3<F>
  39. ): <E, R, FE, A = never>(e: E) => Kind3<F, R, FE, Either<E, A>>
  40. export declare function left<F extends URIS3, FE>(
  41. F: Pointed3C<F, FE>
  42. ): <E, R, A = never>(e: E) => Kind3<F, R, FE, Either<E, A>>
  43. export declare function left<F extends URIS2>(F: Pointed2<F>): <E, FE, A = never>(e: E) => Kind2<F, FE, Either<E, A>>
  44. export declare function left<F extends URIS2, FE>(
  45. F: Pointed2C<F, FE>
  46. ): <E, A = never>(e: E) => Kind2<F, FE, Either<E, A>>
  47. export declare function left<F extends URIS>(F: Pointed1<F>): <E, A = never>(e: E) => Kind<F, Either<E, A>>
  48. export declare function left<F>(F: Pointed<F>): <E, A = never>(e: E) => HKT<F, Either<E, A>>
  49. /**
  50. * @since 2.10.0
  51. */
  52. export declare function rightF<F extends URIS3>(
  53. F: Functor3<F>
  54. ): <R, FE, A, E = never>(fa: Kind3<F, R, FE, A>) => Kind3<F, R, FE, Either<E, A>>
  55. export declare function rightF<F extends URIS3, FE>(
  56. F: Functor3C<F, FE>
  57. ): <R, A, E = never>(fa: Kind3<F, R, FE, A>) => Kind3<F, R, FE, Either<E, A>>
  58. export declare function rightF<F extends URIS2>(
  59. F: Functor2<F>
  60. ): <FE, A, E = never>(fa: Kind2<F, FE, A>) => Kind2<F, FE, Either<E, A>>
  61. export declare function rightF<F extends URIS2, FE>(
  62. F: Functor2C<F, FE>
  63. ): <A, E = never>(fa: Kind2<F, FE, A>) => Kind2<F, FE, Either<E, A>>
  64. export declare function rightF<F extends URIS>(F: Functor1<F>): <A, E = never>(fa: Kind<F, A>) => Kind<F, Either<E, A>>
  65. export declare function rightF<F>(F: Functor<F>): <A, E = never>(fa: HKT<F, A>) => HKT<F, Either<E, A>>
  66. /**
  67. * @since 2.10.0
  68. */
  69. export declare function leftF<F extends URIS3>(
  70. F: Functor3<F>
  71. ): <R, FE, E, A = never>(fe: Kind3<F, R, FE, E>) => Kind3<F, R, FE, Either<E, A>>
  72. export declare function leftF<F extends URIS3, FE>(
  73. F: Functor3C<F, FE>
  74. ): <R, E, A = never>(fe: Kind3<F, R, FE, E>) => Kind3<F, R, FE, Either<E, A>>
  75. export declare function leftF<F extends URIS2>(
  76. F: Functor2<F>
  77. ): <FE, E, A = never>(fe: Kind2<F, FE, E>) => Kind2<F, FE, Either<E, A>>
  78. export declare function leftF<F extends URIS2, FE>(
  79. F: Functor2C<F, FE>
  80. ): <E, A = never>(fe: Kind2<F, FE, E>) => Kind2<F, FE, Either<E, A>>
  81. export declare function leftF<F extends URIS>(F: Functor1<F>): <E, A = never>(fe: Kind<F, E>) => Kind<F, Either<E, A>>
  82. export declare function leftF<F>(F: Functor<F>): <E, A = never>(fe: HKT<F, E>) => HKT<F, Either<E, A>>
  83. /**
  84. * @since 2.12.0
  85. */
  86. export declare function fromNullable<F extends URIS3>(
  87. F: Pointed3<F>
  88. ): <E>(e: E) => <A, S, R>(a: A) => Kind3<F, S, R, Either<E, NonNullable<A>>>
  89. export declare function fromNullable<F extends URIS3, R>(
  90. F: Pointed3C<F, R>
  91. ): <E>(e: E) => <A, S>(a: A) => Kind3<F, S, R, Either<E, NonNullable<A>>>
  92. export declare function fromNullable<F extends URIS2>(
  93. F: Pointed2<F>
  94. ): <E>(e: E) => <A, R>(a: A) => Kind2<F, R, Either<E, NonNullable<A>>>
  95. export declare function fromNullable<F extends URIS2, R>(
  96. F: Pointed2C<F, R>
  97. ): <E>(e: E) => <A>(a: A) => Kind2<F, R, Either<E, NonNullable<A>>>
  98. export declare function fromNullable<F extends URIS>(
  99. F: Pointed1<F>
  100. ): <E>(e: E) => <A>(a: A) => Kind<F, Either<E, NonNullable<A>>>
  101. export declare function fromNullable<F>(F: Pointed<F>): <E>(e: E) => <A>(a: A) => HKT<F, Either<E, NonNullable<A>>>
  102. /**
  103. * @since 2.12.0
  104. */
  105. export declare function fromNullableK<F extends URIS3>(
  106. F: Pointed3<F>
  107. ): <E>(
  108. e: E
  109. ) => <A extends ReadonlyArray<unknown>, B>(
  110. f: (...a: A) => B | null | undefined
  111. ) => <S, R>(...a: A) => Kind3<F, S, R, Either<E, NonNullable<B>>>
  112. export declare function fromNullableK<F extends URIS3, R>(
  113. F: Pointed3C<F, R>
  114. ): <E>(
  115. e: E
  116. ) => <A extends ReadonlyArray<unknown>, B>(
  117. f: (...a: A) => B | null | undefined
  118. ) => <S>(...a: A) => Kind3<F, S, R, Either<E, NonNullable<B>>>
  119. export declare function fromNullableK<F extends URIS2>(
  120. F: Pointed2<F>
  121. ): <E>(
  122. e: E
  123. ) => <A extends ReadonlyArray<unknown>, B>(
  124. f: (...a: A) => B | null | undefined
  125. ) => <R>(...a: A) => Kind2<F, R, Either<E, NonNullable<B>>>
  126. export declare function fromNullableK<F extends URIS2, R>(
  127. F: Pointed2C<F, R>
  128. ): <E>(
  129. e: E
  130. ) => <A extends ReadonlyArray<unknown>, B>(
  131. f: (...a: A) => B | null | undefined
  132. ) => (...a: A) => Kind2<F, R, Either<E, NonNullable<B>>>
  133. export declare function fromNullableK<F extends URIS>(
  134. F: Pointed1<F>
  135. ): <E>(
  136. e: E
  137. ) => <A extends ReadonlyArray<unknown>, B>(
  138. f: (...a: A) => B | null | undefined
  139. ) => (...a: A) => Kind<F, Either<E, NonNullable<B>>>
  140. export declare function fromNullableK<F>(
  141. F: Pointed<F>
  142. ): <E>(
  143. e: E
  144. ) => <A extends ReadonlyArray<unknown>, B>(
  145. f: (...a: A) => B | null | undefined
  146. ) => (...a: A) => HKT<F, Either<E, NonNullable<B>>>
  147. /**
  148. * @since 2.12.0
  149. */
  150. export declare function chainNullableK<M extends URIS3>(
  151. M: Monad3<M>
  152. ): <E>(
  153. e: E
  154. ) => <A, B>(
  155. f: (a: A) => B | null | undefined
  156. ) => <S, R>(ma: Kind3<M, S, R, Either<E, A>>) => Kind3<M, S, R, Either<E, NonNullable<B>>>
  157. export declare function chainNullableK<M extends URIS3, R>(
  158. M: Monad3C<M, R>
  159. ): <E>(
  160. e: E
  161. ) => <A, B>(
  162. f: (a: A) => B | null | undefined
  163. ) => <S>(ma: Kind3<M, S, R, Either<E, A>>) => Kind3<M, S, R, Either<E, NonNullable<B>>>
  164. export declare function chainNullableK<M extends URIS2>(
  165. M: Monad2<M>
  166. ): <E>(
  167. e: E
  168. ) => <A, B>(
  169. f: (a: A) => B | null | undefined
  170. ) => <R>(ma: Kind2<M, R, Either<E, A>>) => Kind2<M, R, Either<E, NonNullable<B>>>
  171. export declare function chainNullableK<M extends URIS2, T>(
  172. M: Monad2C<M, T>
  173. ): <E>(
  174. e: E
  175. ) => <A, B>(
  176. f: (a: A) => B | null | undefined
  177. ) => (ma: Kind2<M, T, Either<E, A>>) => Kind2<M, T, Either<E, NonNullable<B>>>
  178. export declare function chainNullableK<M extends URIS>(
  179. M: Monad1<M>
  180. ): <E>(
  181. e: E
  182. ) => <A, B>(f: (a: A) => B | null | undefined) => (ma: Kind<M, Either<E, A>>) => Kind<M, Either<E, NonNullable<B>>>
  183. export declare function chainNullableK<M>(
  184. M: Monad<M>
  185. ): <E>(
  186. e: E
  187. ) => <A, B>(f: (a: A) => B | null | undefined) => (ma: HKT<M, Either<E, A>>) => HKT<M, Either<E, NonNullable<B>>>
  188. /**
  189. * @since 2.10.0
  190. */
  191. export declare function map<F extends URIS3>(
  192. F: Functor3<F>
  193. ): <A, B>(f: (a: A) => B) => <R, FE, E>(fa: Kind3<F, R, FE, Either<E, A>>) => Kind3<F, R, FE, Either<E, B>>
  194. export declare function map<F extends URIS3, FE>(
  195. F: Functor3C<F, FE>
  196. ): <A, B>(f: (a: A) => B) => <R, E>(fa: Kind3<F, R, FE, Either<E, A>>) => Kind3<F, R, FE, Either<E, B>>
  197. export declare function map<F extends URIS2>(
  198. F: Functor2<F>
  199. ): <A, B>(f: (a: A) => B) => <FE, E>(fa: Kind2<F, FE, Either<E, A>>) => Kind2<F, FE, Either<E, B>>
  200. export declare function map<F extends URIS2, FE>(
  201. F: Functor2C<F, FE>
  202. ): <A, B>(f: (a: A) => B) => <E>(fa: Kind2<F, FE, Either<E, A>>) => Kind2<F, FE, Either<E, B>>
  203. export declare function map<F extends URIS>(
  204. F: Functor1<F>
  205. ): <A, B>(f: (a: A) => B) => <E>(fa: Kind<F, Either<E, A>>) => Kind<F, Either<E, B>>
  206. export declare function map<F>(
  207. F: Functor<F>
  208. ): <A, B>(f: (a: A) => B) => <E>(fa: HKT<F, Either<E, A>>) => HKT<F, Either<E, B>>
  209. /**
  210. * @since 2.10.0
  211. */
  212. export declare function ap<F extends URIS3>(
  213. F: Apply3<F>
  214. ): <R, FE, E, A>(
  215. fa: Kind3<F, R, FE, Either<E, A>>
  216. ) => <B>(fab: Kind3<F, R, FE, Either<E, (a: A) => B>>) => Kind3<F, R, FE, Either<E, B>>
  217. export declare function ap<F extends URIS3, FE>(
  218. F: Apply3C<F, FE>
  219. ): <R, E, A>(
  220. fa: Kind3<F, R, FE, Either<E, A>>
  221. ) => <B>(fab: Kind3<F, R, FE, Either<E, (a: A) => B>>) => Kind3<F, R, FE, Either<E, B>>
  222. export declare function ap<F extends URIS2>(
  223. F: Apply2<F>
  224. ): <FE, E, A>(
  225. fa: Kind2<F, FE, Either<E, A>>
  226. ) => <B>(fab: Kind2<F, FE, Either<E, (a: A) => B>>) => Kind2<F, FE, Either<E, B>>
  227. export declare function ap<F extends URIS2, FE>(
  228. F: Apply2C<F, FE>
  229. ): <E, A>(
  230. fa: Kind2<F, FE, Either<E, A>>
  231. ) => <B>(fab: Kind2<F, FE, Either<E, (a: A) => B>>) => Kind2<F, FE, Either<E, B>>
  232. export declare function ap<F extends URIS>(
  233. F: Apply1<F>
  234. ): <E, A>(fa: Kind<F, Either<E, A>>) => <B>(fab: Kind<F, Either<E, (a: A) => B>>) => Kind<F, Either<E, B>>
  235. export declare function ap<F>(
  236. F: Apply<F>
  237. ): <E, A>(fa: HKT<F, Either<E, A>>) => <B>(fab: HKT<F, Either<E, (a: A) => B>>) => HKT<F, Either<E, B>>
  238. /**
  239. * @since 2.10.0
  240. */
  241. export declare function chain<M extends URIS3>(
  242. M: Monad3<M>
  243. ): <A, R, ME, E, B>(
  244. f: (a: A) => Kind3<M, R, ME, Either<E, B>>
  245. ) => (ma: Kind3<M, R, ME, Either<E, A>>) => Kind3<M, R, ME, Either<E, B>>
  246. export declare function chain<M extends URIS3, ME>(
  247. M: Monad3C<M, ME>
  248. ): <A, R, E, B>(
  249. f: (a: A) => Kind3<M, R, ME, Either<E, B>>
  250. ) => (ma: Kind3<M, R, ME, Either<E, A>>) => Kind3<M, R, ME, Either<E, B>>
  251. export declare function chain<M extends URIS2>(
  252. M: Monad2<M>
  253. ): <A, ME, E, B>(
  254. f: (a: A) => Kind2<M, ME, Either<E, B>>
  255. ) => (ma: Kind2<M, ME, Either<E, A>>) => Kind2<M, ME, Either<E, B>>
  256. export declare function chain<M extends URIS2, ME>(
  257. M: Monad2C<M, ME>
  258. ): <A, E, B>(f: (a: A) => Kind2<M, ME, Either<E, B>>) => (ma: Kind2<M, ME, Either<E, A>>) => Kind2<M, ME, Either<E, B>>
  259. export declare function chain<M extends URIS>(
  260. M: Monad1<M>
  261. ): <A, E, B>(f: (a: A) => Kind<M, Either<E, B>>) => (ma: Kind<M, Either<E, A>>) => Kind<M, Either<E, B>>
  262. export declare function chain<M>(
  263. M: Monad<M>
  264. ): <A, E, B>(f: (a: A) => HKT<M, Either<E, B>>) => (ma: HKT<M, Either<E, A>>) => HKT<M, Either<E, B>>
  265. /**
  266. * @since 2.10.0
  267. */
  268. export declare function alt<M extends URIS3>(
  269. M: Monad3<M>
  270. ): <R, ME, E, A>(
  271. second: Lazy<Kind3<M, R, ME, Either<E, A>>>
  272. ) => (first: Kind3<M, R, ME, Either<E, A>>) => Kind3<M, R, ME, Either<E, A>>
  273. export declare function alt<M extends URIS3, ME>(
  274. M: Monad3C<M, ME>
  275. ): <R, E, A>(
  276. second: Lazy<Kind3<M, R, ME, Either<E, A>>>
  277. ) => (first: Kind3<M, R, ME, Either<E, A>>) => Kind3<M, R, ME, Either<E, A>>
  278. export declare function alt<M extends URIS2>(
  279. M: Monad2<M>
  280. ): <ME, E, A>(
  281. second: Lazy<Kind2<M, ME, Either<E, A>>>
  282. ) => (first: Kind2<M, ME, Either<E, A>>) => Kind2<M, ME, Either<E, A>>
  283. export declare function alt<M extends URIS2, ME>(
  284. M: Monad2C<M, ME>
  285. ): <E, A>(second: Lazy<Kind2<M, ME, Either<E, A>>>) => (first: Kind2<M, ME, Either<E, A>>) => Kind2<M, ME, Either<E, A>>
  286. export declare function alt<M extends URIS>(
  287. M: Monad1<M>
  288. ): <E, A>(second: Lazy<Kind<M, Either<E, A>>>) => (first: Kind<M, Either<E, A>>) => Kind<M, Either<E, A>>
  289. export declare function alt<M>(
  290. M: Monad<M>
  291. ): <E, A>(second: Lazy<HKT<M, Either<E, A>>>) => (first: HKT<M, Either<E, A>>) => HKT<M, Either<E, A>>
  292. /**
  293. * @since 2.10.0
  294. */
  295. export declare function bimap<F extends URIS3>(
  296. F: Functor3<F>
  297. ): <E, G, A, B>(
  298. f: (e: E) => G,
  299. g: (a: A) => B
  300. ) => <R, FE>(fea: Kind3<F, R, FE, Either<E, A>>) => Kind3<F, R, FE, Either<G, B>>
  301. export declare function bimap<F extends URIS3, FE>(
  302. F: Functor3C<F, FE>
  303. ): <E, G, A, B>(
  304. f: (e: E) => G,
  305. g: (a: A) => B
  306. ) => <R>(fea: Kind3<F, R, FE, Either<E, A>>) => Kind3<F, R, FE, Either<G, B>>
  307. export declare function bimap<F extends URIS2>(
  308. F: Functor2<F>
  309. ): <E, G, A, B>(f: (e: E) => G, g: (a: A) => B) => <FE>(fea: Kind2<F, FE, Either<E, A>>) => Kind2<F, FE, Either<G, B>>
  310. export declare function bimap<F extends URIS2, FE>(
  311. F: Functor2C<F, FE>
  312. ): <E, G, A, B>(f: (e: E) => G, g: (a: A) => B) => (fea: Kind2<F, FE, Either<E, A>>) => Kind2<F, FE, Either<G, B>>
  313. export declare function bimap<F extends URIS>(
  314. F: Functor1<F>
  315. ): <E, G, A, B>(f: (e: E) => G, g: (a: A) => B) => (fea: Kind<F, Either<E, A>>) => Kind<F, Either<G, B>>
  316. export declare function bimap<F>(
  317. F: Functor<F>
  318. ): <E, G, A, B>(f: (e: E) => G, g: (a: A) => B) => (fea: HKT<F, Either<E, A>>) => HKT<F, Either<G, B>>
  319. /**
  320. * @since 2.10.0
  321. */
  322. export declare function mapLeft<F extends URIS3>(
  323. F: Functor3<F>
  324. ): <E, G>(f: (e: E) => G) => <R, FE, A>(fea: Kind3<F, R, FE, Either<E, A>>) => Kind3<F, R, FE, Either<G, A>>
  325. export declare function mapLeft<F extends URIS3, FE>(
  326. F: Functor3C<F, FE>
  327. ): <E, G>(f: (e: E) => G) => <R, A>(fea: Kind3<F, R, FE, Either<E, A>>) => Kind3<F, R, FE, Either<G, A>>
  328. export declare function mapLeft<F extends URIS2>(
  329. F: Functor2<F>
  330. ): <E, G>(f: (e: E) => G) => <FE, A>(fea: Kind2<F, FE, Either<E, A>>) => Kind2<F, FE, Either<G, A>>
  331. export declare function mapLeft<F extends URIS2, FE>(
  332. F: Functor2C<F, FE>
  333. ): <E, G>(f: (e: E) => G) => <A>(fea: Kind2<F, FE, Either<E, A>>) => Kind2<F, FE, Either<G, A>>
  334. export declare function mapLeft<F extends URIS>(
  335. F: Functor1<F>
  336. ): <E, G>(f: (e: E) => G) => <A>(fea: Kind<F, Either<E, A>>) => Kind<F, Either<G, A>>
  337. export declare function mapLeft<F>(
  338. F: Functor<F>
  339. ): <E, G>(f: (e: E) => G) => <A>(fea: HKT<F, Either<E, A>>) => HKT<F, Either<G, A>>
  340. /**
  341. * @category error handling
  342. * @since 2.10.0
  343. */
  344. export declare function altValidation<M extends URIS3, E>(
  345. M: Monad3<M>,
  346. S: Semigroup<E>
  347. ): <R, ME, A>(
  348. second: Lazy<Kind3<M, R, ME, Either<E, A>>>
  349. ) => (first: Kind3<M, R, ME, Either<E, A>>) => Kind3<M, R, ME, Either<E, A>>
  350. export declare function altValidation<M extends URIS3, ME, E>(
  351. M: Monad3C<M, ME>,
  352. S: Semigroup<E>
  353. ): <R, A>(
  354. second: Lazy<Kind3<M, R, ME, Either<E, A>>>
  355. ) => (first: Kind3<M, R, ME, Either<E, A>>) => Kind3<M, R, ME, Either<E, A>>
  356. export declare function altValidation<M extends URIS2, E>(
  357. M: Monad2<M>,
  358. S: Semigroup<E>
  359. ): <ME, A>(
  360. second: Lazy<Kind2<M, ME, Either<E, A>>>
  361. ) => (first: Kind2<M, ME, Either<E, A>>) => Kind2<M, ME, Either<E, A>>
  362. export declare function altValidation<M extends URIS2, ME, E>(
  363. M: Monad2C<M, ME>,
  364. S: Semigroup<E>
  365. ): <A>(second: Lazy<Kind2<M, ME, Either<E, A>>>) => (first: Kind2<M, ME, Either<E, A>>) => Kind2<M, ME, Either<E, A>>
  366. export declare function altValidation<M extends URIS, E>(
  367. M: Monad1<M>,
  368. S: Semigroup<E>
  369. ): <A>(second: Lazy<Kind<M, Either<E, A>>>) => (first: Kind<M, Either<E, A>>) => Kind<M, Either<E, A>>
  370. export declare function altValidation<M, E>(
  371. M: Monad<M>,
  372. S: Semigroup<E>
  373. ): <A>(second: Lazy<HKT<M, Either<E, A>>>) => (first: HKT<M, Either<E, A>>) => HKT<M, Either<E, A>>
  374. /**
  375. * @category pattern matching
  376. * @since 2.11.0
  377. */
  378. export declare function match<F extends URIS3>(
  379. F: Functor3<F>
  380. ): <E, B, A>(
  381. onLeft: (e: E) => B,
  382. onRight: (a: A) => B
  383. ) => <R, ME>(ma: Kind3<F, R, ME, Either<E, A>>) => Kind3<F, R, ME, B>
  384. export declare function match<F extends URIS3, FE>(
  385. F: Functor3C<F, FE>
  386. ): <E, B, A>(onLeft: (e: E) => B, onRight: (a: A) => B) => <R>(ma: Kind3<F, R, FE, Either<E, A>>) => Kind3<F, R, FE, B>
  387. export declare function match<F extends URIS2>(
  388. F: Functor2<F>
  389. ): <E, B, A>(onLeft: (e: E) => B, onRight: (a: A) => B) => <FE>(ma: Kind2<F, FE, Either<E, A>>) => Kind2<F, FE, B>
  390. export declare function match<F extends URIS2, FE>(
  391. F: Functor2C<F, FE>
  392. ): <E, B, A>(onLeft: (e: E) => B, onRight: (a: A) => B) => (ma: Kind2<F, FE, Either<E, A>>) => Kind2<F, FE, B>
  393. export declare function match<F extends URIS>(
  394. F: Functor1<F>
  395. ): <E, B, A>(onLeft: (e: E) => B, onRight: (a: A) => B) => (ma: Kind<F, Either<E, A>>) => Kind<F, B>
  396. export declare function match<F>(
  397. F: Functor<F>
  398. ): <E, B, A>(onLeft: (e: E) => B, onRight: (a: A) => B) => (ma: HKT<F, Either<E, A>>) => HKT<F, B>
  399. /**
  400. * @since 2.10.0
  401. */
  402. export declare function matchE<M extends URIS3>(
  403. M: Chain3<M>
  404. ): <E, R, FE, B, A>(
  405. onLeft: (e: E) => Kind3<M, R, FE, B>,
  406. onRight: (a: A) => Kind3<M, R, FE, B>
  407. ) => (ma: Kind3<M, R, FE, Either<E, A>>) => Kind3<M, R, FE, B>
  408. export declare function matchE<M extends URIS3, FE>(
  409. M: Chain3C<M, FE>
  410. ): <E, R, B, A>(
  411. onLeft: (e: E) => Kind3<M, R, FE, B>,
  412. onRight: (a: A) => Kind3<M, R, FE, B>
  413. ) => (ma: Kind3<M, R, FE, Either<E, A>>) => Kind3<M, R, FE, B>
  414. export declare function matchE<M extends URIS2>(
  415. M: Chain2<M>
  416. ): <E, FE, B, A>(
  417. onLeft: (e: E) => Kind2<M, FE, B>,
  418. onRight: (a: A) => Kind2<M, FE, B>
  419. ) => (ma: Kind2<M, FE, Either<E, A>>) => Kind2<M, FE, B>
  420. export declare function matchE<M extends URIS2, FE>(
  421. M: Chain2C<M, FE>
  422. ): <E, B, A>(
  423. onLeft: (e: E) => Kind2<M, FE, B>,
  424. onRight: (a: A) => Kind2<M, FE, B>
  425. ) => (ma: Kind2<M, FE, Either<E, A>>) => Kind2<M, FE, B>
  426. export declare function matchE<M extends URIS>(
  427. M: Chain1<M>
  428. ): <E, B, A>(onLeft: (e: E) => Kind<M, B>, onRight: (a: A) => Kind<M, B>) => (ma: Kind<M, Either<E, A>>) => Kind<M, B>
  429. export declare function matchE<M>(
  430. M: Chain<M>
  431. ): <E, B, A>(onLeft: (e: E) => HKT<M, B>, onRight: (a: A) => HKT<M, B>) => (ma: HKT<M, Either<E, A>>) => HKT<M, B>
  432. /**
  433. * @since 2.10.0
  434. */
  435. export declare function getOrElse<M extends URIS3>(
  436. M: Monad3<M>
  437. ): <E, R, ME, A>(onLeft: (e: E) => Kind3<M, R, ME, A>) => (ma: Kind3<M, R, ME, Either<E, A>>) => Kind3<M, R, ME, A>
  438. export declare function getOrElse<M extends URIS3, ME>(
  439. M: Monad3C<M, ME>
  440. ): <E, R, A>(onLeft: (e: E) => Kind3<M, R, ME, A>) => (ma: Kind3<M, R, ME, Either<E, A>>) => Kind3<M, R, ME, A>
  441. export declare function getOrElse<M extends URIS2>(
  442. M: Monad2<M>
  443. ): <E, ME, A>(onLeft: (e: E) => Kind2<M, ME, A>) => (ma: Kind2<M, ME, Either<E, A>>) => Kind2<M, ME, A>
  444. export declare function getOrElse<M extends URIS2, ME>(
  445. M: Monad2C<M, ME>
  446. ): <E, A>(onLeft: (e: E) => Kind2<M, ME, A>) => (ma: Kind2<M, ME, Either<E, A>>) => Kind2<M, ME, A>
  447. export declare function getOrElse<M extends URIS>(
  448. M: Monad1<M>
  449. ): <E, A>(onLeft: (e: E) => Kind<M, A>) => (ma: Kind<M, Either<E, A>>) => Kind<M, A>
  450. export declare function getOrElse<M>(
  451. M: Monad<M>
  452. ): <E, A>(onLeft: (e: E) => HKT<M, A>) => (ma: HKT<M, Either<E, A>>) => HKT<M, A>
  453. /**
  454. * @since 2.10.0
  455. */
  456. export declare function orElse<M extends URIS3>(
  457. M: Monad3<M>
  458. ): <E1, R, ME, E2, A>(
  459. onLeft: (e: E1) => Kind3<M, R, ME, Either<E2, A>>
  460. ) => (ma: Kind3<M, R, ME, Either<E1, A>>) => Kind3<M, R, ME, Either<E2, A>>
  461. export declare function orElse<M extends URIS3, ME>(
  462. M: Monad3C<M, ME>
  463. ): <E1, R, E2, A>(
  464. onLeft: (e: E1) => Kind3<M, R, ME, Either<E2, A>>
  465. ) => (ma: Kind3<M, R, ME, Either<E1, A>>) => Kind3<M, R, ME, Either<E2, A>>
  466. export declare function orElse<M extends URIS2>(
  467. M: Monad2<M>
  468. ): <E1, ME, E2, A>(
  469. onLeft: (e: E1) => Kind2<M, ME, Either<E2, A>>
  470. ) => (ma: Kind2<M, ME, Either<E1, A>>) => Kind2<M, ME, Either<E2, A>>
  471. export declare function orElse<M extends URIS2, ME>(
  472. M: Monad2C<M, ME>
  473. ): <E1, E2, A>(
  474. onLeft: (e: E1) => Kind2<M, ME, Either<E2, A>>
  475. ) => (ma: Kind2<M, ME, Either<E1, A>>) => Kind2<M, ME, Either<E2, A>>
  476. export declare function orElse<M extends URIS>(
  477. M: Monad1<M>
  478. ): <E1, E2, A>(onLeft: (e: E1) => Kind<M, Either<E2, A>>) => (ma: Kind<M, Either<E1, A>>) => Kind<M, Either<E2, A>>
  479. export declare function orElse<M>(
  480. M: Monad<M>
  481. ): <E1, E2, A>(onLeft: (e: E1) => HKT<M, Either<E2, A>>) => (ma: HKT<M, Either<E1, A>>) => HKT<M, Either<E2, A>>
  482. /**
  483. * @category error handling
  484. * @since 2.11.0
  485. */
  486. export declare function orElseFirst<M extends URIS3>(
  487. M: Monad3<M>
  488. ): <E, R, ME, B>(
  489. onLeft: (e: E) => Kind3<M, R, ME, Either<E, B>>
  490. ) => <A>(ma: Kind3<M, R, ME, Either<E, A>>) => Kind3<M, R, ME, Either<E, A>>
  491. export declare function orElseFirst<M extends URIS3, ME>(
  492. M: Monad3C<M, ME>
  493. ): <E, R, B>(
  494. onLeft: (e: E) => Kind3<M, R, ME, Either<E, B>>
  495. ) => <A>(ma: Kind3<M, R, ME, Either<E, A>>) => Kind3<M, R, ME, Either<E, A>>
  496. export declare function orElseFirst<M extends URIS2>(
  497. M: Monad2<M>
  498. ): <E, ME, B>(
  499. onLeft: (e: E) => Kind2<M, ME, Either<E, B>>
  500. ) => <A>(ma: Kind2<M, ME, Either<E, A>>) => Kind2<M, ME, Either<E, A>>
  501. export declare function orElseFirst<M extends URIS2, ME>(
  502. M: Monad2C<M, ME>
  503. ): <E, B>(
  504. onLeft: (e: E) => Kind2<M, ME, Either<E, B>>
  505. ) => <A>(ma: Kind2<M, ME, Either<E, A>>) => Kind2<M, ME, Either<E, A>>
  506. export declare function orElseFirst<M extends URIS>(
  507. M: Monad1<M>
  508. ): <E, B>(onLeft: (e: E) => Kind<M, Either<E, B>>) => <A>(ma: Kind<M, Either<E, A>>) => Kind<M, Either<E, A>>
  509. export declare function orElseFirst<M>(
  510. M: Monad<M>
  511. ): <E, B>(onLeft: (e: E) => HKT<M, Either<E, B>>) => <A>(ma: HKT<M, Either<E, A>>) => HKT<M, Either<E, A>>
  512. /**
  513. * @category error handling
  514. * @since 2.11.0
  515. */
  516. export declare function orLeft<M extends URIS3>(
  517. M: Monad3<M>
  518. ): <E1, R, ME, E2>(
  519. onLeft: (e: E1) => Kind3<M, R, ME, E2>
  520. ) => <A>(fa: Kind3<M, R, ME, Either<E1, A>>) => Kind3<M, R, ME, Either<E2, A>>
  521. export declare function orLeft<M extends URIS3, ME>(
  522. M: Monad3C<M, ME>
  523. ): <E1, R, E2>(
  524. onLeft: (e: E1) => Kind3<M, R, ME, E2>
  525. ) => <A>(fa: Kind3<M, R, ME, Either<E1, A>>) => Kind3<M, R, ME, Either<E2, A>>
  526. export declare function orLeft<M extends URIS2>(
  527. M: Monad2<M>
  528. ): <E1, ME, E2>(
  529. onLeft: (e: E1) => Kind2<M, ME, E2>
  530. ) => <A>(fa: Kind2<M, ME, Either<E1, A>>) => Kind2<M, ME, Either<E2, A>>
  531. export declare function orLeft<M extends URIS2, ME>(
  532. M: Monad2C<M, ME>
  533. ): <E1, E2>(onLeft: (e: E1) => Kind2<M, ME, E2>) => <A>(fa: Kind2<M, ME, Either<E1, A>>) => Kind2<M, ME, Either<E2, A>>
  534. export declare function orLeft<M extends URIS>(
  535. M: Monad1<M>
  536. ): <E1, E2>(onLeft: (e: E1) => Kind<M, E2>) => <A>(fa: Kind<M, Either<E1, A>>) => Kind<M, Either<E2, A>>
  537. export declare function orLeft<M>(
  538. M: Monad<M>
  539. ): <E1, E2>(onLeft: (e: E1) => HKT<M, E2>) => <A>(fa: HKT<M, Either<E1, A>>) => HKT<M, Either<E2, A>>
  540. /**
  541. * @since 2.10.0
  542. */
  543. export declare function swap<F extends URIS3>(
  544. F: Functor3<F>
  545. ): <R, FE, E, A>(ma: Kind3<F, R, FE, Either<E, A>>) => Kind3<F, R, FE, Either<A, E>>
  546. export declare function swap<F extends URIS3, FE>(
  547. F: Functor3C<F, FE>
  548. ): <R, E, A>(ma: Kind3<F, R, FE, Either<E, A>>) => Kind3<F, R, FE, Either<A, E>>
  549. export declare function swap<F extends URIS2>(
  550. F: Functor2<F>
  551. ): <FE, E, A>(ma: Kind2<F, FE, Either<E, A>>) => Kind2<F, FE, Either<A, E>>
  552. export declare function swap<F extends URIS2, FE>(
  553. F: Functor2C<F, FE>
  554. ): <E, A>(ma: Kind2<F, FE, Either<E, A>>) => Kind2<F, FE, Either<A, E>>
  555. export declare function swap<F extends URIS>(F: Functor1<F>): <E, A>(ma: Kind<F, Either<E, A>>) => Kind<F, Either<A, E>>
  556. export declare function swap<F>(F: Functor<F>): <E, A>(ma: HKT<F, Either<E, A>>) => HKT<F, Either<A, E>>
  557. /**
  558. * @since 2.10.0
  559. */
  560. export declare function toUnion<F extends URIS3>(
  561. F: Functor3<F>
  562. ): <R, FE, E, A>(fa: Kind3<F, R, FE, Either<E, A>>) => Kind3<F, R, FE, E | A>
  563. export declare function toUnion<F extends URIS3, FE>(
  564. F: Functor3C<F, FE>
  565. ): <R, E, A>(fa: Kind3<F, R, FE, Either<E, A>>) => Kind3<F, R, FE, E | A>
  566. export declare function toUnion<F extends URIS2>(
  567. F: Functor2<F>
  568. ): <FE, E, A>(fa: Kind2<F, FE, Either<E, A>>) => Kind2<F, FE, E | A>
  569. export declare function toUnion<F extends URIS2, FE>(
  570. F: Functor2C<F, FE>
  571. ): <E, A>(fa: Kind2<F, FE, Either<E, A>>) => Kind2<F, FE, E | A>
  572. export declare function toUnion<F extends URIS>(F: Functor1<F>): <E, A>(fa: Kind<F, Either<E, A>>) => Kind<F, E | A>
  573. export declare function toUnion<F>(F: Functor<F>): <E, A>(fa: HKT<F, Either<E, A>>) => HKT<F, E | A>
  574. import URI = E.URI
  575. /**
  576. * @category zone of death
  577. * @since 2.0.0
  578. * @deprecated
  579. */
  580. export interface EitherT<M, E, A> extends HKT<M, Either<E, A>> {}
  581. /**
  582. * @category zone of death
  583. * @since 2.0.0
  584. * @deprecated
  585. */
  586. export interface EitherM<M> extends ApplicativeCompositionHKT2<M, URI> {
  587. readonly chain: <E, A, B>(ma: EitherT<M, E, A>, f: (a: A) => EitherT<M, E, B>) => EitherT<M, E, B>
  588. readonly alt: <E, A>(fa: EitherT<M, E, A>, that: Lazy<EitherT<M, E, A>>) => EitherT<M, E, A>
  589. readonly bimap: <E, A, N, B>(ma: EitherT<M, E, A>, f: (e: E) => N, g: (a: A) => B) => EitherT<M, N, B>
  590. readonly mapLeft: <E, A, N>(ma: EitherT<M, E, A>, f: (e: E) => N) => EitherT<M, N, A>
  591. readonly fold: <E, A, R>(ma: EitherT<M, E, A>, onLeft: (e: E) => HKT<M, R>, onRight: (a: A) => HKT<M, R>) => HKT<M, R>
  592. readonly getOrElse: <E, A>(ma: EitherT<M, E, A>, onLeft: (e: E) => HKT<M, A>) => HKT<M, A>
  593. readonly orElse: <E, A, N>(ma: EitherT<M, E, A>, onLeft: (e: E) => EitherT<M, N, A>) => EitherT<M, N, A>
  594. readonly swap: <E, A>(ma: EitherT<M, E, A>) => EitherT<M, A, E>
  595. readonly rightM: <E, A>(ma: HKT<M, A>) => EitherT<M, E, A>
  596. readonly leftM: <E, A>(me: HKT<M, E>) => EitherT<M, E, A>
  597. readonly left: <E, A>(e: E) => EitherT<M, E, A>
  598. }
  599. /**
  600. * @category zone of death
  601. * @since 2.0.0
  602. * @deprecated
  603. */
  604. export declare type EitherT1<M extends URIS, E, A> = Kind<M, Either<E, A>>
  605. /**
  606. * @category zone of death
  607. * @since 2.0.0
  608. * @deprecated
  609. */
  610. export interface EitherM1<M extends URIS> extends ApplicativeComposition12<M, URI> {
  611. readonly chain: <E, A, B>(ma: EitherT1<M, E, A>, f: (a: A) => EitherT1<M, E, B>) => EitherT1<M, E, B>
  612. readonly alt: <E, A>(fa: EitherT1<M, E, A>, that: Lazy<EitherT1<M, E, A>>) => EitherT1<M, E, A>
  613. readonly bimap: <E, A, N, B>(ma: EitherT1<M, E, A>, f: (e: E) => N, g: (a: A) => B) => EitherT1<M, N, B>
  614. readonly mapLeft: <E, A, N>(ma: EitherT1<M, E, A>, f: (e: E) => N) => EitherT1<M, N, A>
  615. readonly fold: <E, A, R>(
  616. ma: EitherT1<M, E, A>,
  617. onLeft: (e: E) => Kind<M, R>,
  618. onRight: (a: A) => Kind<M, R>
  619. ) => Kind<M, R>
  620. readonly getOrElse: <E, A>(ma: EitherT1<M, E, A>, onLeft: (e: E) => Kind<M, A>) => Kind<M, A>
  621. readonly orElse: <E, A, N>(ma: EitherT1<M, E, A>, onLeft: (e: E) => EitherT1<M, N, A>) => EitherT1<M, N, A>
  622. readonly swap: <E, A>(ma: EitherT1<M, E, A>) => EitherT1<M, A, E>
  623. readonly rightM: <E, A>(ma: Kind<M, A>) => EitherT1<M, E, A>
  624. readonly leftM: <E, A>(me: Kind<M, E>) => EitherT1<M, E, A>
  625. readonly left: <E, A>(e: E) => EitherT1<M, E, A>
  626. }
  627. /**
  628. * @category zone of death
  629. * @since 2.0.0
  630. * @deprecated
  631. */
  632. export declare type EitherT2<M extends URIS2, R, E, A> = Kind2<M, R, Either<E, A>>
  633. /**
  634. * @category zone of death
  635. * @since 2.0.0
  636. * @deprecated
  637. */
  638. export interface EitherM2<M extends URIS2> extends ApplicativeComposition22<M, URI> {
  639. readonly chain: <R, E, A, B>(ma: EitherT2<M, R, E, A>, f: (a: A) => EitherT2<M, R, E, B>) => EitherT2<M, R, E, B>
  640. readonly alt: <R, E, A>(fa: EitherT2<M, R, E, A>, that: Lazy<EitherT2<M, R, E, A>>) => EitherT2<M, R, E, A>
  641. readonly bimap: <R, E, A, N, B>(ma: EitherT2<M, R, E, A>, f: (e: E) => N, g: (a: A) => B) => EitherT2<M, R, N, B>
  642. readonly mapLeft: <R, E, A, N>(ma: EitherT2<M, R, E, A>, f: (e: E) => N) => EitherT2<M, R, N, A>
  643. readonly fold: <R, E, A, B>(
  644. ma: EitherT2<M, R, E, A>,
  645. onLeft: (e: E) => Kind2<M, R, B>,
  646. onRight: (a: A) => Kind2<M, R, B>
  647. ) => Kind2<M, R, B>
  648. readonly getOrElse: <R, E, A>(ma: EitherT2<M, R, E, A>, onLeft: (e: E) => Kind2<M, R, A>) => Kind2<M, R, A>
  649. readonly orElse: <R, E, A, F>(
  650. ma: EitherT2<M, R, E, A>,
  651. onLeft: (e: E) => EitherT2<M, R, F, A>
  652. ) => EitherT2<M, R, F, A>
  653. readonly swap: <R, E, A>(ma: EitherT2<M, R, E, A>) => EitherT2<M, R, A, E>
  654. readonly rightM: <R, E, A>(ma: Kind2<M, R, A>) => EitherT2<M, R, E, A>
  655. readonly leftM: <R, E, A>(me: Kind2<M, R, E>) => EitherT2<M, R, E, A>
  656. readonly left: <R, E, A>(e: E) => EitherT2<M, R, E, A>
  657. }
  658. /**
  659. * @category zone of death
  660. * @since 2.0.0
  661. * @deprecated
  662. */
  663. export declare function getEitherM<M extends URIS2>(M: Monad2<M>): EitherM2<M>
  664. /** @deprecated */
  665. export declare function getEitherM<M extends URIS>(M: Monad1<M>): EitherM1<M>
  666. /** @deprecated */
  667. export declare function getEitherM<M>(M: Monad<M>): EitherM<M>