版博士V2.0程序
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 
 

153 líneas
4.9 KiB

  1. /**
  2. * Lift a computation from the `IO` monad
  3. *
  4. * @since 2.10.0
  5. */
  6. import { Chain, Chain1, Chain2, Chain2C, Chain3, Chain3C, Chain4 } from './Chain'
  7. import { HKT, Kind, Kind2, Kind3, Kind4, URIS, URIS2, URIS3, URIS4 } from './HKT'
  8. import { IO } from './IO'
  9. /**
  10. * @category model
  11. * @since 2.10.0
  12. */
  13. export interface FromIO<F> {
  14. readonly URI: F
  15. readonly fromIO: <A>(fa: IO<A>) => HKT<F, A>
  16. }
  17. /**
  18. * @category model
  19. * @since 2.10.0
  20. */
  21. export interface FromIO1<F extends URIS> {
  22. readonly URI: F
  23. readonly fromIO: <A>(fa: IO<A>) => Kind<F, A>
  24. }
  25. /**
  26. * @category model
  27. * @since 2.10.0
  28. */
  29. export interface FromIO2<F extends URIS2> {
  30. readonly URI: F
  31. readonly fromIO: <A, E>(fa: IO<A>) => Kind2<F, E, A>
  32. }
  33. /**
  34. * @category model
  35. * @since 2.10.0
  36. */
  37. export interface FromIO2C<F extends URIS2, E> {
  38. readonly URI: F
  39. readonly _E: E
  40. readonly fromIO: <A>(fa: IO<A>) => Kind2<F, E, A>
  41. }
  42. /**
  43. * @category model
  44. * @since 2.10.0
  45. */
  46. export interface FromIO3<F extends URIS3> {
  47. readonly URI: F
  48. readonly fromIO: <A, R, E>(fa: IO<A>) => Kind3<F, R, E, A>
  49. }
  50. /**
  51. * @category model
  52. * @since 2.10.0
  53. */
  54. export interface FromIO3C<F extends URIS3, E> {
  55. readonly URI: F
  56. readonly _E: E
  57. readonly fromIO: <A, R>(fa: IO<A>) => Kind3<F, R, E, A>
  58. }
  59. /**
  60. * @category model
  61. * @since 2.10.0
  62. */
  63. export interface FromIO4<F extends URIS4> {
  64. readonly URI: F
  65. readonly fromIO: <A, S, R, E>(fa: IO<A>) => Kind4<F, S, R, E, A>
  66. }
  67. /**
  68. * @since 2.10.0
  69. */
  70. export declare function fromIOK<F extends URIS4>(
  71. F: FromIO4<F>
  72. ): <A extends ReadonlyArray<unknown>, B>(f: (...a: A) => IO<B>) => <S, R, E>(...a: A) => Kind4<F, S, R, E, B>
  73. export declare function fromIOK<F extends URIS3>(
  74. F: FromIO3<F>
  75. ): <A extends ReadonlyArray<unknown>, B>(f: (...a: A) => IO<B>) => <R, E>(...a: A) => Kind3<F, R, E, B>
  76. export declare function fromIOK<F extends URIS3, E>(
  77. F: FromIO3C<F, E>
  78. ): <A extends ReadonlyArray<unknown>, B>(f: (...a: A) => IO<B>) => <R>(...a: A) => Kind3<F, R, E, B>
  79. export declare function fromIOK<F extends URIS2>(
  80. F: FromIO2<F>
  81. ): <A extends ReadonlyArray<unknown>, B>(f: (...a: A) => IO<B>) => <E>(...a: A) => Kind2<F, E, B>
  82. export declare function fromIOK<F extends URIS2, E>(
  83. F: FromIO2C<F, E>
  84. ): <A extends ReadonlyArray<unknown>, B>(f: (...a: A) => IO<B>) => (...a: A) => Kind2<F, E, B>
  85. export declare function fromIOK<F extends URIS>(
  86. F: FromIO1<F>
  87. ): <A extends ReadonlyArray<unknown>, B>(f: (...a: A) => IO<B>) => (...a: A) => Kind<F, B>
  88. export declare function fromIOK<F>(
  89. F: FromIO<F>
  90. ): <A extends ReadonlyArray<unknown>, B>(f: (...a: A) => IO<B>) => (...a: A) => HKT<F, B>
  91. /**
  92. * @since 2.10.0
  93. */
  94. export declare function chainIOK<M extends URIS4>(
  95. F: FromIO4<M>,
  96. M: Chain4<M>
  97. ): <A, B>(f: (a: A) => IO<B>) => <S, R, E>(first: Kind4<M, S, R, E, A>) => Kind4<M, S, R, E, B>
  98. export declare function chainIOK<M extends URIS3>(
  99. F: FromIO3<M>,
  100. M: Chain3<M>
  101. ): <A, B>(f: (a: A) => IO<B>) => <R, E>(first: Kind3<M, R, E, A>) => Kind3<M, R, E, B>
  102. export declare function chainIOK<M extends URIS3, E>(
  103. F: FromIO3C<M, E>,
  104. M: Chain3C<M, E>
  105. ): <A, B>(f: (a: A) => IO<B>) => <R>(first: Kind3<M, R, E, A>) => Kind3<M, R, E, B>
  106. export declare function chainIOK<M extends URIS2>(
  107. F: FromIO2<M>,
  108. M: Chain2<M>
  109. ): <A, B>(f: (a: A) => IO<B>) => <E>(first: Kind2<M, E, A>) => Kind2<M, E, B>
  110. export declare function chainIOK<M extends URIS2, E>(
  111. F: FromIO2C<M, E>,
  112. M: Chain2C<M, E>
  113. ): <A, B>(f: (a: A) => IO<B>) => (first: Kind2<M, E, A>) => Kind2<M, E, B>
  114. export declare function chainIOK<M extends URIS>(
  115. F: FromIO1<M>,
  116. M: Chain1<M>
  117. ): <A, B>(f: (a: A) => IO<B>) => (first: Kind<M, A>) => Kind<M, B>
  118. export declare function chainIOK<M>(
  119. F: FromIO<M>,
  120. M: Chain<M>
  121. ): <A, B>(f: (a: A) => IO<B>) => (first: HKT<M, A>) => HKT<M, B>
  122. /**
  123. * @since 2.10.0
  124. */
  125. export declare function chainFirstIOK<M extends URIS4>(
  126. F: FromIO4<M>,
  127. M: Chain4<M>
  128. ): <A, B>(f: (a: A) => IO<B>) => <S, R, E>(first: Kind4<M, S, R, E, A>) => Kind4<M, S, R, E, A>
  129. export declare function chainFirstIOK<M extends URIS3>(
  130. F: FromIO3<M>,
  131. M: Chain3<M>
  132. ): <A, B>(f: (a: A) => IO<B>) => <R, E>(first: Kind3<M, R, E, A>) => Kind3<M, R, E, A>
  133. export declare function chainFirstIOK<M extends URIS3, E>(
  134. F: FromIO3C<M, E>,
  135. M: Chain3C<M, E>
  136. ): <A, B>(f: (a: A) => IO<B>) => <R, E>(first: Kind3<M, R, E, A>) => Kind3<M, R, E, A>
  137. export declare function chainFirstIOK<M extends URIS2>(
  138. F: FromIO2<M>,
  139. M: Chain2<M>
  140. ): <A, B>(f: (a: A) => IO<B>) => <E>(first: Kind2<M, E, A>) => Kind2<M, E, A>
  141. export declare function chainFirstIOK<M extends URIS2, E>(
  142. F: FromIO2C<M, E>,
  143. M: Chain2C<M, E>
  144. ): <A, B>(f: (a: A) => IO<B>) => <E>(first: Kind2<M, E, A>) => Kind2<M, E, A>
  145. export declare function chainFirstIOK<M extends URIS>(
  146. F: FromIO1<M>,
  147. M: Chain1<M>
  148. ): <A, B>(f: (a: A) => IO<B>) => (first: Kind<M, A>) => Kind<M, A>
  149. export declare function chainFirstIOK<M>(
  150. F: FromIO<M>,
  151. M: Chain<M>
  152. ): <A, B>(f: (a: A) => IO<B>) => (first: HKT<M, A>) => HKT<M, A>