Skip to content

Commit

Permalink
support variadic functions
Browse files Browse the repository at this point in the history
  • Loading branch information
gcanti committed Jan 2, 2020
1 parent 5c0578a commit add2ffa
Show file tree
Hide file tree
Showing 14 changed files with 82 additions and 50 deletions.
2 changes: 1 addition & 1 deletion docs/modules/IOEither.ts.md
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ Added in v2.0.0
**Signature**
```ts
export function fromEitherK<E, A, B>(f: (a: A) => Either<E, B>): (a: A) => IOEither<E, B> { ... }
export function fromEitherK<E, A extends Array<unknown>, B>(f: (...a: A) => Either<E, B>): (...a: A) => IOEither<E, B> { ... }
```
Added in v2.4.0
Expand Down
4 changes: 3 additions & 1 deletion docs/modules/ReaderEither.ts.md
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,9 @@ Added in v2.0.0
**Signature**
```ts
export function fromEitherK<E, A, B>(f: (a: A) => Either<E, B>): <R>(a: A) => ReaderEither<R, E, B> { ... }
export function fromEitherK<E, A extends Array<unknown>, B>(
f: (...a: A) => Either<E, B>
): <R>(...a: A) => ReaderEither<R, E, B> { ... }
```
Added in v2.4.0
Expand Down
4 changes: 2 additions & 2 deletions docs/modules/ReaderTask.ts.md
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ Added in v2.3.0
**Signature**
```ts
export function fromIOK<A, B>(f: (a: A) => IO<B>): <R>(a: A) => ReaderTask<R, B> { ... }
export function fromIOK<A extends Array<unknown>, B>(f: (...a: A) => IO<B>): <R>(...a: A) => ReaderTask<R, B> { ... }
```
Added in v2.4.0
Expand All @@ -190,7 +190,7 @@ Added in v2.4.0
**Signature**
```ts
export function fromTaskK<A, B>(f: (a: A) => Task<B>): <R>(a: A) => ReaderTask<R, B> { ... }
export function fromTaskK<A extends Array<unknown>, B>(f: (...a: A) => Task<B>): <R>(...a: A) => ReaderTask<R, B> { ... }
```
Added in v2.4.0
Expand Down
12 changes: 9 additions & 3 deletions docs/modules/ReaderTaskEither.ts.md
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,9 @@ Added in v2.0.0
**Signature**
```ts
export function fromEitherK<E, A, B>(f: (a: A) => Either<E, B>): <R>(a: A) => ReaderTaskEither<R, E, B> { ... }
export function fromEitherK<E, A extends Array<unknown>, B>(
f: (...a: A) => Either<E, B>
): <R>(...a: A) => ReaderTaskEither<R, E, B> { ... }
```
Added in v2.4.0
Expand All @@ -261,7 +263,9 @@ Added in v2.0.0
**Signature**
```ts
export function fromIOEitherK<E, A, B>(f: (a: A) => IOEither<E, B>): <R>(a: A) => ReaderTaskEither<R, E, B> { ... }
export function fromIOEitherK<E, A extends Array<unknown>, B>(
f: (...a: A) => IOEither<E, B>
): <R>(...a: A) => ReaderTaskEither<R, E, B> { ... }
```
Added in v2.4.0
Expand All @@ -281,7 +285,9 @@ Added in v2.0.0
**Signature**
```ts
export function fromTaskEitherK<E, A, B>(f: (a: A) => TaskEither<E, B>): <R>(a: A) => ReaderTaskEither<R, E, B> { ... }
export function fromTaskEitherK<E, A extends Array<unknown>, B>(
f: (...a: A) => TaskEither<E, B>
): <R>(...a: A) => ReaderTaskEither<R, E, B> { ... }
```
Added in v2.4.0
Expand Down
20 changes: 12 additions & 8 deletions docs/modules/StateReaderTaskEither.ts.md
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,9 @@ Added in v2.4.0
**Signature**
```ts
export function fromEitherK<E, A, B>(f: (a: A) => Either<E, B>): <S, R>(a: A) => StateReaderTaskEither<S, R, E, B> { ... }
export function fromEitherK<E, A extends Array<unknown>, B>(
f: (...a: A) => Either<E, B>
): <S, R>(...a: A) => StateReaderTaskEither<S, R, E, B> { ... }
```
Added in v2.4.0
Expand All @@ -287,7 +289,9 @@ Added in v2.0.0
**Signature**
```ts
export function fromIOEitherK<E, A, B>(f: (a: A) => IOEither<E, B>): <S, R>(a: A) => StateReaderTaskEither<S, R, E, B> { ... }
export function fromIOEitherK<E, A extends Array<unknown>, B>(
f: (...a: A) => IOEither<E, B>
): <S, R>(...a: A) => StateReaderTaskEither<S, R, E, B> { ... }
```
Added in v2.4.0
Expand All @@ -307,9 +311,9 @@ Added in v2.0.0
**Signature**
```ts
export function fromReaderTaskEitherK<R, E, A, B>(
f: (a: A) => ReaderTaskEither<R, E, B>
): <S>(a: A) => StateReaderTaskEither<S, R, E, B> { ... }
export function fromReaderTaskEitherK<R, E, A extends Array<unknown>, B>(
f: (...a: A) => ReaderTaskEither<R, E, B>
): <S>(...a: A) => StateReaderTaskEither<S, R, E, B> { ... }
```
Added in v2.4.0
Expand All @@ -329,9 +333,9 @@ Added in v2.0.0
**Signature**
```ts
export function fromTaskEitherK<E, A, B>(
f: (a: A) => TaskEither<E, B>
): <S, R>(a: A) => StateReaderTaskEither<S, R, E, B> { ... }
export function fromTaskEitherK<E, A extends Array<unknown>, B>(
f: (...a: A) => TaskEither<E, B>
): <S, R>(...a: A) => StateReaderTaskEither<S, R, E, B> { ... }
```
Added in v2.4.0
Expand Down
2 changes: 1 addition & 1 deletion docs/modules/Task.ts.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ Added in v2.0.0
**Signature**

```ts
export function fromIOK<A, B>(f: (a: A) => IO<B>): (a: A) => Task<B> { ... }
export function fromIOK<A extends Array<unknown>, B>(f: (...a: A) => IO<B>): (...a: A) => Task<B> { ... }
```

Added in v2.4.0
Expand Down
8 changes: 6 additions & 2 deletions docs/modules/TaskEither.ts.md
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,9 @@ Added in v2.0.0
**Signature**
```ts
export function fromEitherK<E, A, B>(f: (a: A) => Either<E, B>): (a: A) => TaskEither<E, B> { ... }
export function fromEitherK<E, A extends Array<unknown>, B>(
f: (...a: A) => Either<E, B>
): (...a: A) => TaskEither<E, B> { ... }
```
Added in v2.4.0
Expand All @@ -239,7 +241,9 @@ Added in v2.4.0
**Signature**
```ts
export function fromIOEitherK<E, A, B>(f: (a: A) => IOEither<E, B>): (a: A) => TaskEither<E, B> { ... }
export function fromIOEitherK<E, A extends Array<unknown>, B>(
f: (...a: A) => IOEither<E, B>
): (...a: A) => TaskEither<E, B> { ... }
```
Added in v2.4.0
Expand Down
4 changes: 2 additions & 2 deletions src/IOEither.ts
Original file line number Diff line number Diff line change
Expand Up @@ -175,8 +175,8 @@ export function getFilterable<E>(M: Monoid<E>): Filterable2C<URI, E> {
/**
* @since 2.4.0
*/
export function fromEitherK<E, A, B>(f: (a: A) => Either<E, B>): (a: A) => IOEither<E, B> {
return a => fromEither(f(a))
export function fromEitherK<E, A extends Array<unknown>, B>(f: (...a: A) => Either<E, B>): (...a: A) => IOEither<E, B> {
return (...a) => fromEither(f(...a))
}

/**
Expand Down
6 changes: 4 additions & 2 deletions src/ReaderEither.ts
Original file line number Diff line number Diff line change
Expand Up @@ -154,8 +154,10 @@ export function getReaderValidation<E>(
/**
* @since 2.4.0
*/
export function fromEitherK<E, A, B>(f: (a: A) => Either<E, B>): <R>(a: A) => ReaderEither<R, E, B> {
return a => fromEither(f(a))
export function fromEitherK<E, A extends Array<unknown>, B>(
f: (...a: A) => Either<E, B>
): <R>(...a: A) => ReaderEither<R, E, B> {
return (...a) => fromEither(f(...a))
}

/**
Expand Down
8 changes: 4 additions & 4 deletions src/ReaderTask.ts
Original file line number Diff line number Diff line change
Expand Up @@ -104,8 +104,8 @@ export function local<Q, R>(f: (f: Q) => R): <E, A>(ma: ReaderTask<R, A>) => Rea
/**
* @since 2.4.0
*/
export function fromIOK<A, B>(f: (a: A) => IO<B>): <R>(a: A) => ReaderTask<R, B> {
return a => fromIO(f(a))
export function fromIOK<A extends Array<unknown>, B>(f: (...a: A) => IO<B>): <R>(...a: A) => ReaderTask<R, B> {
return (...a) => fromIO(f(...a))
}

/**
Expand All @@ -118,8 +118,8 @@ export function chainIOK<A, B>(f: (a: A) => IO<B>): <R>(ma: ReaderTask<R, A>) =>
/**
* @since 2.4.0
*/
export function fromTaskK<A, B>(f: (a: A) => Task<B>): <R>(a: A) => ReaderTask<R, B> {
return a => fromTask(f(a))
export function fromTaskK<A extends Array<unknown>, B>(f: (...a: A) => Task<B>): <R>(...a: A) => ReaderTask<R, B> {
return (...a) => fromTask(f(...a))
}

/**
Expand Down
18 changes: 12 additions & 6 deletions src/ReaderTaskEither.ts
Original file line number Diff line number Diff line change
Expand Up @@ -251,8 +251,10 @@ export function getReaderTaskValidation<E>(
/**
* @since 2.4.0
*/
export function fromEitherK<E, A, B>(f: (a: A) => Either<E, B>): <R>(a: A) => ReaderTaskEither<R, E, B> {
return a => fromEither(f(a))
export function fromEitherK<E, A extends Array<unknown>, B>(
f: (...a: A) => Either<E, B>
): <R>(...a: A) => ReaderTaskEither<R, E, B> {
return (...a) => fromEither(f(...a))
}

/**
Expand All @@ -267,8 +269,10 @@ export function chainEitherK<E, A, B>(
/**
* @since 2.4.0
*/
export function fromIOEitherK<E, A, B>(f: (a: A) => IOEither<E, B>): <R>(a: A) => ReaderTaskEither<R, E, B> {
return a => fromIOEither(f(a))
export function fromIOEitherK<E, A extends Array<unknown>, B>(
f: (...a: A) => IOEither<E, B>
): <R>(...a: A) => ReaderTaskEither<R, E, B> {
return (...a) => fromIOEither(f(...a))
}

/**
Expand All @@ -283,8 +287,10 @@ export function chainIOEitherK<E, A, B>(
/**
* @since 2.4.0
*/
export function fromTaskEitherK<E, A, B>(f: (a: A) => TaskEither<E, B>): <R>(a: A) => ReaderTaskEither<R, E, B> {
return a => fromTaskEither(f(a))
export function fromTaskEitherK<E, A extends Array<unknown>, B>(
f: (...a: A) => TaskEither<E, B>
): <R>(...a: A) => ReaderTaskEither<R, E, B> {
return (...a) => fromTaskEither(f(...a))
}

/**
Expand Down
28 changes: 16 additions & 12 deletions src/StateReaderTaskEither.ts
Original file line number Diff line number Diff line change
Expand Up @@ -190,8 +190,10 @@ export const gets: <S, R, E = never, A = never>(f: (s: S) => A) => StateReaderTa
/**
* @since 2.4.0
*/
export function fromEitherK<E, A, B>(f: (a: A) => Either<E, B>): <S, R>(a: A) => StateReaderTaskEither<S, R, E, B> {
return a => fromEither(f(a))
export function fromEitherK<E, A extends Array<unknown>, B>(
f: (...a: A) => Either<E, B>
): <S, R>(...a: A) => StateReaderTaskEither<S, R, E, B> {
return (...a) => fromEither(f(...a))
}

/**
Expand All @@ -206,8 +208,10 @@ export function chainEitherK<E, A, B>(
/**
* @since 2.4.0
*/
export function fromIOEitherK<E, A, B>(f: (a: A) => IOEither<E, B>): <S, R>(a: A) => StateReaderTaskEither<S, R, E, B> {
return a => fromIOEither(f(a))
export function fromIOEitherK<E, A extends Array<unknown>, B>(
f: (...a: A) => IOEither<E, B>
): <S, R>(...a: A) => StateReaderTaskEither<S, R, E, B> {
return (...a) => fromIOEither(f(...a))
}

/**
Expand All @@ -222,10 +226,10 @@ export function chainIOEitherK<E, A, B>(
/**
* @since 2.4.0
*/
export function fromTaskEitherK<E, A, B>(
f: (a: A) => TaskEither<E, B>
): <S, R>(a: A) => StateReaderTaskEither<S, R, E, B> {
return a => fromTaskEither(f(a))
export function fromTaskEitherK<E, A extends Array<unknown>, B>(
f: (...a: A) => TaskEither<E, B>
): <S, R>(...a: A) => StateReaderTaskEither<S, R, E, B> {
return (...a) => fromTaskEither(f(...a))
}

/**
Expand All @@ -240,10 +244,10 @@ export function chainTaskEitherK<E, A, B>(
/**
* @since 2.4.0
*/
export function fromReaderTaskEitherK<R, E, A, B>(
f: (a: A) => ReaderTaskEither<R, E, B>
): <S>(a: A) => StateReaderTaskEither<S, R, E, B> {
return a => fromReaderTaskEither(f(a))
export function fromReaderTaskEitherK<R, E, A extends Array<unknown>, B>(
f: (...a: A) => ReaderTaskEither<R, E, B>
): <S>(...a: A) => StateReaderTaskEither<S, R, E, B> {
return (...a) => fromReaderTaskEither(f(...a))
}

/**
Expand Down
4 changes: 2 additions & 2 deletions src/Task.ts
Original file line number Diff line number Diff line change
Expand Up @@ -117,8 +117,8 @@ export function of<A>(a: A): Task<A> {
/**
* @since 2.4.0
*/
export function fromIOK<A, B>(f: (a: A) => IO<B>): (a: A) => Task<B> {
return a => fromIO(f(a))
export function fromIOK<A extends Array<unknown>, B>(f: (...a: A) => IO<B>): (...a: A) => Task<B> {
return (...a) => fromIO(f(...a))
}

/**
Expand Down
12 changes: 8 additions & 4 deletions src/TaskEither.ts
Original file line number Diff line number Diff line change
Expand Up @@ -269,8 +269,10 @@ export function getFilterable<E>(M: Monoid<E>): Filterable2C<URI, E> {
/**
* @since 2.4.0
*/
export function fromEitherK<E, A, B>(f: (a: A) => Either<E, B>): (a: A) => TaskEither<E, B> {
return a => fromEither(f(a))
export function fromEitherK<E, A extends Array<unknown>, B>(
f: (...a: A) => Either<E, B>
): (...a: A) => TaskEither<E, B> {
return (...a) => fromEither(f(...a))
}

/**
Expand All @@ -283,8 +285,10 @@ export function chainEitherK<E, A, B>(f: (a: A) => Either<E, B>): (ma: TaskEithe
/**
* @since 2.4.0
*/
export function fromIOEitherK<E, A, B>(f: (a: A) => IOEither<E, B>): (a: A) => TaskEither<E, B> {
return a => fromIOEither(f(a))
export function fromIOEitherK<E, A extends Array<unknown>, B>(
f: (...a: A) => IOEither<E, B>
): (...a: A) => TaskEither<E, B> {
return (...a) => fromIOEither(f(...a))
}

/**
Expand Down

0 comments on commit add2ffa

Please sign in to comment.