From 53929cea325049a28e12f6c896c92d174391c0bb Mon Sep 17 00:00:00 2001 From: DenisFrezzato Date: Fri, 20 Aug 2021 08:13:41 +0200 Subject: [PATCH] Add chainFirstEitherK(W) in ReaderTaskEither module --- package.json | 2 +- src/ReaderTaskEither.ts | 18 ++++++++++++++++++ test/ReaderTaskEither.ts | 5 +++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 4120c7cae4..f23651128b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fp-ts", - "version": "2.11.5", + "version": "2.11.4", "description": "Functional programming in TypeScript", "main": "lib/index.js", "module": "es6/index.js", diff --git a/src/ReaderTaskEither.ts b/src/ReaderTaskEither.ts index dfa68bca6a..1158c1de03 100644 --- a/src/ReaderTaskEither.ts +++ b/src/ReaderTaskEither.ts @@ -1156,6 +1156,24 @@ export const chainEitherKW: ( f: (a: A) => Either ) => (ma: ReaderTaskEither) => ReaderTaskEither = chainEitherK as any +/** + * Less strict version of [`chainFirstEitherK`](#chainfirsteitherk). + * + * @category combinators + * @since 2.12.0 + */ +export const chainFirstEitherKW: ( + f: (a: A) => Either +) => (ma: ReaderTaskEither) => ReaderTaskEither = (f) => chainFirstW(fromEitherK(f)) + +/** + * @category combinators + * @since 2.12.0 + */ +export const chainFirstEitherK: ( + f: (a: A) => Either +) => (ma: ReaderTaskEither) => ReaderTaskEither = chainFirstEitherKW + /** * @category constructors * @since 2.0.0 diff --git a/test/ReaderTaskEither.ts b/test/ReaderTaskEither.ts index e9d94ee096..a4047727d6 100644 --- a/test/ReaderTaskEither.ts +++ b/test/ReaderTaskEither.ts @@ -420,6 +420,11 @@ describe('ReaderTaskEither', () => { U.deepStrictEqual(await pipe(_.right('a'), _.chainEitherK(f))(undefined)(), E.right(1)) }) + it('chainFirstEitherKW', async () => { + const f = (s: string) => E.right(s.length) + U.deepStrictEqual(await pipe(_.right<{}, number, string>('a'), _.chainFirstEitherKW(f))({})(), E.right('a')) + }) + it('chainIOEitherK', async () => { const f = (s: string) => IE.right(s.length) U.deepStrictEqual(await pipe(_.right('a'), _.chainIOEitherK(f))(undefined)(), E.right(1))