版博士V2.0程序
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 

336 Zeilen
14 KiB

  1. /**
  2. * The `FromEither` type class represents those data types which support errors.
  3. *
  4. * @since 2.10.0
  5. */
  6. import { Chain, Chain1, Chain2, Chain2C, Chain3, Chain3C, Chain4 } from './Chain'
  7. import { Either } from './Either'
  8. import { Lazy } from './function'
  9. import { HKT2, Kind, Kind2, Kind3, Kind4, URIS, URIS2, URIS3, URIS4 } from './HKT'
  10. import { Option } from './Option'
  11. import { Predicate } from './Predicate'
  12. import { Refinement } from './Refinement'
  13. /**
  14. * @category model
  15. * @since 2.10.0
  16. */
  17. export interface FromEither<F> {
  18. readonly URI: F
  19. readonly fromEither: <E, A>(e: Either<E, A>) => HKT2<F, E, A>
  20. }
  21. /**
  22. * @category model
  23. * @since 2.11.0
  24. */
  25. export interface FromEither1<F extends URIS> {
  26. readonly URI: F
  27. readonly fromEither: <A>(fa: Either<unknown, A>) => Kind<F, A>
  28. }
  29. /**
  30. * @category model
  31. * @since 2.10.0
  32. */
  33. export interface FromEither2<F extends URIS2> {
  34. readonly URI: F
  35. readonly fromEither: <E, A>(fa: Either<E, A>) => Kind2<F, E, A>
  36. }
  37. /**
  38. * @category model
  39. * @since 2.10.0
  40. */
  41. export interface FromEither2C<F extends URIS2, E> {
  42. readonly URI: F
  43. readonly _E: E
  44. readonly fromEither: <A>(fa: Either<E, A>) => Kind2<F, E, A>
  45. }
  46. /**
  47. * @category model
  48. * @since 2.10.0
  49. */
  50. export interface FromEither3<F extends URIS3> {
  51. readonly URI: F
  52. readonly fromEither: <E, A, R>(fa: Either<E, A>) => Kind3<F, R, E, A>
  53. }
  54. /**
  55. * @category model
  56. * @since 2.10.0
  57. */
  58. export interface FromEither3C<F extends URIS3, E> {
  59. readonly URI: F
  60. readonly _E: E
  61. readonly fromEither: <A, R>(fa: Either<E, A>) => Kind3<F, R, E, A>
  62. }
  63. /**
  64. * @category model
  65. * @since 2.10.0
  66. */
  67. export interface FromEither4<F extends URIS4> {
  68. readonly URI: F
  69. readonly fromEither: <E, A, S, R>(fa: Either<E, A>) => Kind4<F, S, R, E, A>
  70. }
  71. /**
  72. * @category constructors
  73. * @since 2.10.0
  74. */
  75. export declare function fromOption<F extends URIS4>(
  76. F: FromEither4<F>
  77. ): <E>(onNone: Lazy<E>) => <A, S, R>(fa: Option<A>) => Kind4<F, S, R, E, A>
  78. export declare function fromOption<F extends URIS3>(
  79. F: FromEither3<F>
  80. ): <E>(onNone: Lazy<E>) => <A, R>(fa: Option<A>) => Kind3<F, R, E, A>
  81. export declare function fromOption<F extends URIS3, E>(
  82. F: FromEither3C<F, E>
  83. ): (onNone: Lazy<E>) => <A, R>(fa: Option<A>) => Kind3<F, R, E, A>
  84. export declare function fromOption<F extends URIS2>(
  85. F: FromEither2<F>
  86. ): <E>(onNone: Lazy<E>) => <A>(fa: Option<A>) => Kind2<F, E, A>
  87. export declare function fromOption<F extends URIS2, E>(
  88. F: FromEither2C<F, E>
  89. ): (onNone: Lazy<E>) => <A>(fa: Option<A>) => Kind2<F, E, A>
  90. export declare function fromOption<F>(F: FromEither<F>): <E>(onNone: Lazy<E>) => <A>(ma: Option<A>) => HKT2<F, E, A>
  91. /**
  92. * @category lifting
  93. * @since 2.10.0
  94. */
  95. export declare function fromPredicate<F extends URIS4>(
  96. F: FromEither4<F>
  97. ): {
  98. <A, B extends A, E>(refinement: Refinement<A, B>, onFalse: (a: A) => E): <S, R>(a: A) => Kind4<F, S, R, E, B>
  99. <A, E>(predicate: Predicate<A>, onFalse: (a: A) => E): <S, R, B extends A>(b: B) => Kind4<F, S, R, E, B>
  100. <A, E>(predicate: Predicate<A>, onFalse: (a: A) => E): <S, R>(a: A) => Kind4<F, S, R, E, A>
  101. }
  102. export declare function fromPredicate<F extends URIS3>(
  103. F: FromEither3<F>
  104. ): {
  105. <A, B extends A, E>(refinement: Refinement<A, B>, onFalse: (a: A) => E): <R>(a: A) => Kind3<F, R, E, B>
  106. <A, E>(predicate: Predicate<A>, onFalse: (a: A) => E): <R, B extends A>(b: B) => Kind3<F, R, E, B>
  107. <A, E>(predicate: Predicate<A>, onFalse: (a: A) => E): <R>(a: A) => Kind3<F, R, E, A>
  108. }
  109. export declare function fromPredicate<F extends URIS3, E>(
  110. F: FromEither3C<F, E>
  111. ): {
  112. <A, B extends A>(refinement: Refinement<A, B>, onFalse: (a: A) => E): <R>(a: A) => Kind3<F, R, E, B>
  113. <A>(predicate: Predicate<A>, onFalse: (a: A) => E): <R, B extends A>(b: B) => Kind3<F, R, E, B>
  114. <A>(predicate: Predicate<A>, onFalse: (a: A) => E): <R>(a: A) => Kind3<F, R, E, A>
  115. }
  116. export declare function fromPredicate<F extends URIS2>(
  117. F: FromEither2<F>
  118. ): {
  119. <A, B extends A, E>(refinement: Refinement<A, B>, onFalse: (a: A) => E): (a: A) => Kind2<F, E, B>
  120. <A, E>(predicate: Predicate<A>, onFalse: (a: A) => E): <B extends A>(b: B) => Kind2<F, E, B>
  121. <A, E>(predicate: Predicate<A>, onFalse: (a: A) => E): (a: A) => Kind2<F, E, A>
  122. }
  123. export declare function fromPredicate<F extends URIS2, E>(
  124. F: FromEither2C<F, E>
  125. ): {
  126. <A, B extends A>(refinement: Refinement<A, B>, onFalse: (a: A) => E): (a: A) => Kind2<F, E, B>
  127. <A>(predicate: Predicate<A>, onFalse: (a: A) => E): <B extends A>(b: B) => Kind2<F, E, B>
  128. <A>(predicate: Predicate<A>, onFalse: (a: A) => E): (a: A) => Kind2<F, E, A>
  129. }
  130. export declare function fromPredicate<F>(F: FromEither<F>): {
  131. <A, B extends A, E>(refinement: Refinement<A, B>, onFalse: (a: A) => E): (a: A) => HKT2<F, E, B>
  132. <A, E>(predicate: Predicate<A>, onFalse: (a: A) => E): <B extends A>(b: B) => HKT2<F, E, B>
  133. <A, E>(predicate: Predicate<A>, onFalse: (a: A) => E): (a: A) => HKT2<F, E, A>
  134. }
  135. /**
  136. * @since 2.10.0
  137. */
  138. export declare function fromOptionK<F extends URIS4>(
  139. F: FromEither4<F>
  140. ): <E>(
  141. onNone: Lazy<E>
  142. ) => <A extends ReadonlyArray<unknown>, B>(f: (...a: A) => Option<B>) => <S, R>(...a: A) => Kind4<F, S, R, E, B>
  143. export declare function fromOptionK<F extends URIS3>(
  144. F: FromEither3<F>
  145. ): <E>(
  146. onNone: Lazy<E>
  147. ) => <A extends ReadonlyArray<unknown>, B>(f: (...a: A) => Option<B>) => <R>(...a: A) => Kind3<F, R, E, B>
  148. export declare function fromOptionK<F extends URIS3, E>(
  149. F: FromEither3C<F, E>
  150. ): (
  151. onNone: Lazy<E>
  152. ) => <A extends ReadonlyArray<unknown>, B>(f: (...a: A) => Option<B>) => <R>(...a: A) => Kind3<F, R, E, B>
  153. export declare function fromOptionK<F extends URIS2>(
  154. F: FromEither2<F>
  155. ): <E>(
  156. onNone: Lazy<E>
  157. ) => <A extends ReadonlyArray<unknown>, B>(f: (...a: A) => Option<B>) => (...a: A) => Kind2<F, E, B>
  158. export declare function fromOptionK<F extends URIS2, E>(
  159. F: FromEither2C<F, E>
  160. ): (onNone: Lazy<E>) => <A extends ReadonlyArray<unknown>, B>(f: (...a: A) => Option<B>) => (...a: A) => Kind2<F, E, B>
  161. export declare function fromOptionK<F>(
  162. F: FromEither<F>
  163. ): <E>(
  164. onNone: Lazy<E>
  165. ) => <A extends ReadonlyArray<unknown>, B>(f: (...a: A) => Option<B>) => (...a: A) => HKT2<F, E, B>
  166. /**
  167. * @since 2.10.0
  168. */
  169. export declare function chainOptionK<F extends URIS4>(
  170. F: FromEither4<F>,
  171. M: Chain4<F>
  172. ): <E>(onNone: Lazy<E>) => <A, B>(f: (a: A) => Option<B>) => <S, R>(ma: Kind4<F, S, R, E, A>) => Kind4<F, S, R, E, B>
  173. export declare function chainOptionK<F extends URIS3>(
  174. F: FromEither3<F>,
  175. M: Chain3<F>
  176. ): <E>(onNone: Lazy<E>) => <A, B>(f: (a: A) => Option<B>) => <R>(ma: Kind3<F, R, E, A>) => Kind3<F, R, E, B>
  177. export declare function chainOptionK<F extends URIS3, E>(
  178. F: FromEither3C<F, E>,
  179. M: Chain3C<F, E>
  180. ): (onNone: Lazy<E>) => <A, B>(f: (a: A) => Option<B>) => <R>(ma: Kind3<F, R, E, A>) => Kind3<F, R, E, B>
  181. export declare function chainOptionK<F extends URIS2>(
  182. F: FromEither2<F>,
  183. M: Chain2<F>
  184. ): <E>(onNone: Lazy<E>) => <A, B>(f: (a: A) => Option<B>) => (ma: Kind2<F, E, A>) => Kind2<F, E, B>
  185. export declare function chainOptionK<F extends URIS2, E>(
  186. F: FromEither2C<F, E>,
  187. M: Chain2C<F, E>
  188. ): (onNone: Lazy<E>) => <A, B>(f: (a: A) => Option<B>) => (ma: Kind2<F, E, A>) => Kind2<F, E, B>
  189. export declare function chainOptionK<F>(
  190. F: FromEither<F>,
  191. M: Chain<F>
  192. ): <E>(onNone: Lazy<E>) => <A, B>(f: (a: A) => Option<B>) => (ma: HKT2<F, E, A>) => HKT2<F, E, B>
  193. /**
  194. * @since 2.10.0
  195. */
  196. export declare function fromEitherK<F extends URIS4>(
  197. F: FromEither4<F>
  198. ): <A extends ReadonlyArray<unknown>, E, B>(f: (...a: A) => Either<E, B>) => <S, R>(...a: A) => Kind4<F, S, R, E, B>
  199. export declare function fromEitherK<F extends URIS3>(
  200. F: FromEither3<F>
  201. ): <A extends ReadonlyArray<unknown>, E, B>(f: (...a: A) => Either<E, B>) => <R>(...a: A) => Kind3<F, R, E, B>
  202. export declare function fromEitherK<F extends URIS3, E>(
  203. F: FromEither3C<F, E>
  204. ): <A extends ReadonlyArray<unknown>, B>(f: (...a: A) => Either<E, B>) => <R>(...a: A) => Kind3<F, R, E, B>
  205. export declare function fromEitherK<F extends URIS2>(
  206. F: FromEither2<F>
  207. ): <A extends ReadonlyArray<unknown>, E, B>(f: (...a: A) => Either<E, B>) => (...a: A) => Kind2<F, E, B>
  208. export declare function fromEitherK<F extends URIS2, E>(
  209. F: FromEither2C<F, E>
  210. ): <A extends ReadonlyArray<unknown>, B>(f: (...a: A) => Either<E, B>) => (...a: A) => Kind2<F, E, B>
  211. export declare function fromEitherK<F extends URIS>(
  212. F: FromEither1<F>
  213. ): <E, A extends ReadonlyArray<unknown>, B>(f: (...a: A) => Either<E, B>) => (...a: A) => Kind<F, B>
  214. export declare function fromEitherK<F>(
  215. F: FromEither<F>
  216. ): <A extends ReadonlyArray<unknown>, E, B>(f: (...a: A) => Either<E, B>) => (...a: A) => HKT2<F, E, B>
  217. /**
  218. * @since 2.10.0
  219. */
  220. export declare function chainEitherK<M extends URIS4>(
  221. F: FromEither4<M>,
  222. M: Chain4<M>
  223. ): <A, E, B>(f: (a: A) => Either<E, B>) => <S, R>(ma: Kind4<M, S, R, E, A>) => Kind4<M, S, R, E, B>
  224. export declare function chainEitherK<M extends URIS3>(
  225. F: FromEither3<M>,
  226. M: Chain3<M>
  227. ): <A, E, B>(f: (a: A) => Either<E, B>) => <R>(ma: Kind3<M, R, E, A>) => Kind3<M, R, E, B>
  228. export declare function chainEitherK<M extends URIS3, E>(
  229. F: FromEither3C<M, E>,
  230. M: Chain3C<M, E>
  231. ): <A, B>(f: (a: A) => Either<E, B>) => <R>(ma: Kind3<M, R, E, A>) => Kind3<M, R, E, B>
  232. export declare function chainEitherK<M extends URIS2>(
  233. F: FromEither2<M>,
  234. M: Chain2<M>
  235. ): <A, E, B>(f: (a: A) => Either<E, B>) => (ma: Kind2<M, E, A>) => Kind2<M, E, B>
  236. export declare function chainEitherK<M extends URIS2, E>(
  237. F: FromEither2C<M, E>,
  238. M: Chain2C<M, E>
  239. ): <A, B>(f: (a: A) => Either<E, B>) => (ma: Kind2<M, E, A>) => Kind2<M, E, B>
  240. export declare function chainEitherK<M extends URIS>(
  241. F: FromEither1<M>,
  242. M: Chain1<M>
  243. ): <E, A, B>(f: (a: A) => Either<E, B>) => (ma: Kind<M, A>) => Kind<M, B>
  244. export declare function chainEitherK<M>(
  245. F: FromEither<M>,
  246. M: Chain<M>
  247. ): <A, E, B>(f: (a: A) => Either<E, B>) => (ma: HKT2<M, E, A>) => HKT2<M, E, B>
  248. /**
  249. * @since 2.12.0
  250. */
  251. export declare function chainFirstEitherK<M extends URIS4>(
  252. F: FromEither4<M>,
  253. M: Chain4<M>
  254. ): <A, E, B>(f: (a: A) => Either<E, B>) => <S, R>(ma: Kind4<M, S, R, E, A>) => Kind4<M, S, R, E, A>
  255. export declare function chainFirstEitherK<M extends URIS3>(
  256. F: FromEither3<M>,
  257. M: Chain3<M>
  258. ): <A, E, B>(f: (a: A) => Either<E, B>) => <R>(ma: Kind3<M, R, E, A>) => Kind3<M, R, E, A>
  259. export declare function chainFirstEitherK<M extends URIS3, E>(
  260. F: FromEither3C<M, E>,
  261. M: Chain3C<M, E>
  262. ): <A, B>(f: (a: A) => Either<E, B>) => <R>(ma: Kind3<M, R, E, A>) => Kind3<M, R, E, A>
  263. export declare function chainFirstEitherK<M extends URIS2>(
  264. F: FromEither2<M>,
  265. M: Chain2<M>
  266. ): <A, E, B>(f: (a: A) => Either<E, B>) => (ma: Kind2<M, E, A>) => Kind2<M, E, A>
  267. export declare function chainFirstEitherK<M extends URIS2, E>(
  268. F: FromEither2C<M, E>,
  269. M: Chain2C<M, E>
  270. ): <A, B>(f: (a: A) => Either<E, B>) => (ma: Kind2<M, E, A>) => Kind2<M, E, A>
  271. export declare function chainFirstEitherK<M extends URIS>(
  272. F: FromEither1<M>,
  273. M: Chain1<M>
  274. ): <E, A, B>(f: (a: A) => Either<E, B>) => (ma: Kind<M, A>) => Kind<M, A>
  275. export declare function chainFirstEitherK<M>(
  276. F: FromEither<M>,
  277. M: Chain<M>
  278. ): <A, E, B>(f: (a: A) => Either<E, B>) => (ma: HKT2<M, E, A>) => HKT2<M, E, A>
  279. /**
  280. * @since 2.10.0
  281. */
  282. export declare function filterOrElse<M extends URIS4>(
  283. F: FromEither4<M>,
  284. M: Chain4<M>
  285. ): {
  286. <A, B extends A, E>(refinement: Refinement<A, B>, onFalse: (a: A) => E): <S, R>(
  287. ma: Kind4<M, S, R, E, A>
  288. ) => Kind4<M, S, R, E, B>
  289. <A, E>(predicate: Predicate<A>, onFalse: (a: A) => E): <S, R, B extends A>(
  290. mb: Kind4<M, S, R, E, B>
  291. ) => Kind4<M, S, R, E, B>
  292. <A, E>(predicate: Predicate<A>, onFalse: (a: A) => E): <S, R>(ma: Kind4<M, S, R, E, A>) => Kind4<M, S, R, E, A>
  293. }
  294. export declare function filterOrElse<M extends URIS3>(
  295. F: FromEither3<M>,
  296. M: Chain3<M>
  297. ): {
  298. <A, B extends A, E>(refinement: Refinement<A, B>, onFalse: (a: A) => E): <R>(
  299. ma: Kind3<M, R, E, A>
  300. ) => Kind3<M, R, E, B>
  301. <A, E>(predicate: Predicate<A>, onFalse: (a: A) => E): <R, B extends A>(mb: Kind3<M, R, E, B>) => Kind3<M, R, E, B>
  302. <A, E>(predicate: Predicate<A>, onFalse: (a: A) => E): <R>(ma: Kind3<M, R, E, A>) => Kind3<M, R, E, A>
  303. }
  304. export declare function filterOrElse<M extends URIS3, E>(
  305. F: FromEither3C<M, E>,
  306. M: Chain3C<M, E>
  307. ): {
  308. <A, B extends A>(refinement: Refinement<A, B>, onFalse: (a: A) => E): <R>(ma: Kind3<M, R, E, A>) => Kind3<M, R, E, B>
  309. <A>(predicate: Predicate<A>, onFalse: (a: A) => E): <R, B extends A>(mb: Kind3<M, R, E, B>) => Kind3<M, R, E, B>
  310. <A>(predicate: Predicate<A>, onFalse: (a: A) => E): <R>(ma: Kind3<M, R, E, A>) => Kind3<M, R, E, A>
  311. }
  312. export declare function filterOrElse<M extends URIS2>(
  313. F: FromEither2<M>,
  314. M: Chain2<M>
  315. ): {
  316. <A, B extends A, E>(refinement: Refinement<A, B>, onFalse: (a: A) => E): (ma: Kind2<M, E, A>) => Kind2<M, E, B>
  317. <A, E>(predicate: Predicate<A>, onFalse: (a: A) => E): <B extends A>(mb: Kind2<M, E, B>) => Kind2<M, E, B>
  318. <A, E>(predicate: Predicate<A>, onFalse: (a: A) => E): (ma: Kind2<M, E, A>) => Kind2<M, E, A>
  319. }
  320. export declare function filterOrElse<M extends URIS2, E>(
  321. F: FromEither2C<M, E>,
  322. M: Chain2C<M, E>
  323. ): {
  324. <A, B extends A>(refinement: Refinement<A, B>, onFalse: (a: A) => E): (ma: Kind2<M, E, A>) => Kind2<M, E, B>
  325. <A>(predicate: Predicate<A>, onFalse: (a: A) => E): <B extends A>(mb: Kind2<M, E, B>) => Kind2<M, E, B>
  326. <A>(predicate: Predicate<A>, onFalse: (a: A) => E): (ma: Kind2<M, E, A>) => Kind2<M, E, A>
  327. }
  328. export declare function filterOrElse<M extends URIS2>(
  329. F: FromEither<M>,
  330. M: Chain<M>
  331. ): {
  332. <A, B extends A, E>(refinement: Refinement<A, B>, onFalse: (a: A) => E): (ma: HKT2<M, E, A>) => HKT2<M, E, B>
  333. <A, E>(predicate: Predicate<A>, onFalse: (a: A) => E): <B extends A>(mb: HKT2<M, E, B>) => HKT2<M, E, B>
  334. <A, E>(predicate: Predicate<A>, onFalse: (a: A) => E): (ma: HKT2<M, E, A>) => HKT2<M, E, A>
  335. }