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

55 lines
1.3 KiB

  1. /**
  2. * @since 2.0.0
  3. */
  4. import { HKT2, Kind2, Kind3, Kind4, URIS2, URIS3, URIS4 } from './HKT'
  5. /**
  6. * @category model
  7. * @since 2.0.0
  8. */
  9. export interface Semigroupoid<F> {
  10. readonly URI: F
  11. readonly compose: <A, B, C>(bc: HKT2<F, B, C>, ab: HKT2<F, A, B>) => HKT2<F, A, C>
  12. }
  13. /**
  14. * @category model
  15. * @since 2.0.0
  16. */
  17. export interface Semigroupoid2<F extends URIS2> {
  18. readonly URI: F
  19. readonly compose: <A, B, C>(ab: Kind2<F, B, C>, la: Kind2<F, A, B>) => Kind2<F, A, C>
  20. }
  21. /**
  22. * @category model
  23. * @since 2.0.0
  24. */
  25. export interface Semigroupoid2C<F extends URIS2, A> {
  26. readonly URI: F
  27. readonly _E: A
  28. readonly compose: <B, C>(ab: Kind2<F, B, C>, la: Kind2<F, A, B>) => Kind2<F, A, C>
  29. }
  30. /**
  31. * @category model
  32. * @since 2.0.0
  33. */
  34. export interface Semigroupoid3<F extends URIS3> {
  35. readonly URI: F
  36. readonly compose: <R, A, B, C>(ab: Kind3<F, R, B, C>, la: Kind3<F, R, A, B>) => Kind3<F, R, A, C>
  37. }
  38. /**
  39. * @category model
  40. * @since 2.2.0
  41. */
  42. export interface Semigroupoid3C<F extends URIS3, A> {
  43. readonly URI: F
  44. readonly _E: A
  45. readonly compose: <R, B, C>(ab: Kind3<F, R, B, C>, la: Kind3<F, R, A, B>) => Kind3<F, R, A, C>
  46. }
  47. /**
  48. * @category model
  49. * @since 2.0.0
  50. */
  51. export interface Semigroupoid4<F extends URIS4> {
  52. readonly URI: F
  53. readonly compose: <S, R, A, B, C>(ab: Kind4<F, S, R, B, C>, la: Kind4<F, S, R, A, B>) => Kind4<F, S, R, A, C>
  54. }