| 56 | * @since 0.24.0 |
| 57 | */ |
| 58 | export const ap = <F extends TypeLambda>(F: SemiApplicative<F>): { |
| 59 | <R2, O2, E2, A>( |
| 60 | that: Kind<F, R2, O2, E2, A> |
| 61 | ): <R1, O1, E1, B>( |
| 62 | self: Kind<F, R1, O1, E1, (a: A) => B> |
| 63 | ) => Kind<F, R1 & R2, O2 | O1, E2 | E1, B> |
| 64 | <R1, O1, E1, A, B, R2, O2, E2>( |
| 65 | self: Kind<F, R1, O1, E1, (a: A) => B>, |
| 66 | that: Kind<F, R2, O2, E2, A> |
| 67 | ): Kind<F, R1 & R2, O1 | O2, E1 | E2, B> |
| 68 | } => |
| 69 | dual(2, <R1, O1, E1, A, B, R2, O2, E2>( |
| 70 | self: Kind<F, R1, O1, E1, (a: A) => B>, |
| 71 | that: Kind<F, R2, O2, E2, A> |
| 72 | ): Kind<F, R1 & R2, O1 | O2, E1 | E2, B> => zipWith(F)(self, that, (f, a) => f(a))) |
| 73 | |
| 74 | /** |
| 75 | * @since 0.24.0 |