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

  1. /**
  2. * @since 2.0.0
  3. */
  4. import { Functor, Functor1, Functor2, Functor2C, Functor3, Functor4, Functor3C } from './Functor'
  5. import { HKT, Kind, Kind2, Kind3, URIS, URIS2, URIS3, URIS4, Kind4 } from './HKT'
  6. /**
  7. * @category model
  8. * @since 2.0.0
  9. */
  10. export interface Extend<W> extends Functor<W> {
  11. readonly extend: <A, B>(wa: HKT<W, A>, f: (wa: HKT<W, A>) => B) => HKT<W, B>
  12. }
  13. /**
  14. * @category model
  15. * @since 2.0.0
  16. */
  17. export interface Extend1<W extends URIS> extends Functor1<W> {
  18. readonly extend: <A, B>(wa: Kind<W, A>, f: (wa: Kind<W, A>) => B) => Kind<W, B>
  19. }
  20. /**
  21. * @category model
  22. * @since 2.0.0
  23. */
  24. export interface Extend2<W extends URIS2> extends Functor2<W> {
  25. readonly extend: <E, A, B>(wa: Kind2<W, E, A>, f: (wa: Kind2<W, E, A>) => B) => Kind2<W, E, B>
  26. }
  27. /**
  28. * @category model
  29. * @since 2.0.0
  30. */
  31. export interface Extend2C<W extends URIS2, E> extends Functor2C<W, E> {
  32. readonly extend: <A, B>(wa: Kind2<W, E, A>, f: (wa: Kind2<W, E, A>) => B) => Kind2<W, E, B>
  33. }
  34. /**
  35. * @category model
  36. * @since 2.0.0
  37. */
  38. export interface Extend3<W extends URIS3> extends Functor3<W> {
  39. readonly extend: <R, E, A, B>(wa: Kind3<W, R, E, A>, f: (wa: Kind3<W, R, E, A>) => B) => Kind3<W, R, E, B>
  40. }
  41. /**
  42. * @category model
  43. * @since 2.2.0
  44. */
  45. export interface Extend3C<W extends URIS3, E> extends Functor3C<W, E> {
  46. readonly extend: <R, A, B>(wa: Kind3<W, R, E, A>, f: (wa: Kind3<W, R, E, A>) => B) => Kind3<W, R, E, B>
  47. }
  48. /**
  49. * @category model
  50. * @since 2.0.0
  51. */
  52. export interface Extend4<W extends URIS4> extends Functor4<W> {
  53. readonly extend: <S, R, E, A, B>(wa: Kind4<W, S, R, E, A>, f: (wa: Kind4<W, S, R, E, A>) => B) => Kind4<W, S, R, E, B>
  54. }