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

63 lines
1.5 KiB

  1. /**
  2. * @since 2.0.0
  3. */
  4. import { HKT, Kind, Kind2, Kind3, Kind4, URIS, URIS2, URIS3, URIS4 } from './HKT'
  5. /**
  6. * @category model
  7. * @since 2.0.0
  8. */
  9. export interface Invariant<F> {
  10. readonly URI: F
  11. readonly imap: <A, B>(fa: HKT<F, A>, f: (a: A) => B, g: (b: B) => A) => HKT<F, B>
  12. }
  13. /**
  14. * @category model
  15. * @since 2.0.0
  16. */
  17. export interface Invariant1<F extends URIS> {
  18. readonly URI: F
  19. readonly imap: <A, B>(fa: Kind<F, A>, f: (a: A) => B, g: (b: B) => A) => Kind<F, B>
  20. }
  21. /**
  22. * @category model
  23. * @since 2.0.0
  24. */
  25. export interface Invariant2<F extends URIS2> {
  26. readonly URI: F
  27. readonly imap: <E, A, B>(fa: Kind2<F, E, A>, f: (a: A) => B, g: (b: B) => A) => Kind2<F, E, B>
  28. }
  29. /**
  30. * @category model
  31. * @since 2.0.0
  32. */
  33. export interface Invariant2C<F extends URIS2, E> {
  34. readonly URI: F
  35. readonly _E: E
  36. readonly imap: <A, B>(fa: Kind2<F, E, A>, f: (a: A) => B, g: (b: B) => A) => Kind2<F, E, B>
  37. }
  38. /**
  39. * @category model
  40. * @since 2.0.0
  41. */
  42. export interface Invariant3<F extends URIS3> {
  43. readonly URI: F
  44. readonly imap: <R, E, A, B>(fa: Kind3<F, R, E, A>, f: (a: A) => B, g: (b: B) => A) => Kind3<F, R, E, B>
  45. }
  46. /**
  47. * @category model
  48. * @since 2.4.2
  49. */
  50. export interface Invariant3C<F extends URIS3, E> {
  51. readonly URI: F
  52. readonly _E: E
  53. readonly imap: <R, A, B>(fa: Kind3<F, R, E, A>, f: (a: A) => B, g: (b: B) => A) => Kind3<F, R, E, B>
  54. }
  55. /**
  56. * @category model
  57. * @since 2.4.2
  58. */
  59. export interface Invariant4<F extends URIS4> {
  60. readonly URI: F
  61. readonly imap: <S, R, E, A, B>(fa: Kind4<F, S, R, E, A>, f: (a: A) => B, g: (b: B) => A) => Kind4<F, S, R, E, B>
  62. }