版博士V2.0程序
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

1 год назад
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /**
  2. * @since 2.0.0
  3. */
  4. import { Functor2, Functor2C, Functor3, Functor4, Functor3C } from './Functor'
  5. import { HKT, HKT2, Kind2, Kind3, Kind4, URIS2, URIS3, URIS4 } from './HKT'
  6. /**
  7. * @category model
  8. * @since 2.0.0
  9. */
  10. export interface Profunctor<F> {
  11. readonly URI: F
  12. readonly map: <E, A, B>(fa: HKT2<F, E, A>, f: (a: A) => B) => HKT<F, B>
  13. readonly promap: <E, A, D, B>(fea: HKT2<F, E, A>, f: (d: D) => E, g: (a: A) => B) => HKT2<F, D, B>
  14. }
  15. /**
  16. * @category model
  17. * @since 2.0.0
  18. */
  19. export interface Profunctor2<F extends URIS2> extends Functor2<F> {
  20. readonly promap: <E, A, D, B>(fea: Kind2<F, E, A>, f: (d: D) => E, g: (a: A) => B) => Kind2<F, D, B>
  21. }
  22. /**
  23. * @category model
  24. * @since 2.0.0
  25. */
  26. export interface Profunctor2C<F extends URIS2, E> extends Functor2C<F, E> {
  27. readonly promap: <A, D, B>(fea: Kind2<F, E, A>, f: (d: D) => E, g: (a: A) => B) => Kind2<F, D, B>
  28. }
  29. /**
  30. * @category model
  31. * @since 2.0.0
  32. */
  33. export interface Profunctor3<F extends URIS3> extends Functor3<F> {
  34. readonly promap: <R, E, A, D, B>(fea: Kind3<F, R, E, A>, f: (d: D) => E, g: (a: A) => B) => Kind3<F, R, D, B>
  35. }
  36. /**
  37. * @category model
  38. * @since 2.2.0
  39. */
  40. export interface Profunctor3C<F extends URIS3, E> extends Functor3C<F, E> {
  41. readonly promap: <R, A, D, B>(fea: Kind3<F, R, E, A>, f: (d: D) => E, g: (a: A) => B) => Kind3<F, R, D, B>
  42. }
  43. /**
  44. * @category model
  45. * @since 2.0.0
  46. */
  47. export interface Profunctor4<F extends URIS4> extends Functor4<F> {
  48. readonly promap: <S, R, E, A, D, B>(fea: Kind4<F, S, R, E, A>, f: (d: D) => E, g: (a: A) => B) => Kind4<F, S, R, D, B>
  49. }