The following features can be backported **without breaking changes**: **2.14** - `flatMap` (aka chain / chainW) https://github.com/gcanti/fp-ts/pull/1849 **2.15** - `flatMap*` (aka chain\*K / chain\*KW) https://github.com/gcanti/fp-ts/pull/1862 - `tap` (aka chainFirst / chainFirstW) https://github.com/gcanti/fp-ts/pull/1857 - `tapError` (aka orElseFirst / orElseFirstW) https://github.com/gcanti/fp-ts/pull/1858 - `LazyArg` (aka Lazy) https://github.com/gcanti/fp-ts/pull/1856 **2.16** - `tapEither` (dual) (aka `chainFirstEitherK` / `chainFirstEitherKW`) https://github.com/gcanti/fp-ts/pull/1864 - `tapIO` (dual) (aka `chainFirstIOK`) https://github.com/gcanti/fp-ts/pull/1865 - `as` / `asUnit` https://github.com/gcanti/fp-ts/pull/1867 - `tapTask` (dual) (aka `chainFirstTaskK`) https://github.com/gcanti/fp-ts/pull/1869 - `mapError` (dual) (aka `mapLeft`) https://github.com/gcanti/fp-ts/pull/1870 - `mapBoth` (dual) (aka `bimap`) https://github.com/gcanti/fp-ts/pull/1872 - `tapReader` (dual) (aka `chainFirstReaderK` / `chainFirstIReaderKW`) https://github.com/gcanti/fp-ts/pull/1871 - `tapReaderEither` (dual) (aka `chainFirstReaderEitherK` / `chainFirstEitherKW`) https://github.com/gcanti/fp-ts/pull/1873 - `tapReaderIO` (dual) (aka `chainFirstReaderIOK`) https://github.com/gcanti/fp-ts/pull/1873 - `tapReaderTask` (dual) (aka `chainFirstReaderTaskK`) https://github.com/gcanti/fp-ts/pull/1873 - `tapTaskEither` (dual) (aka `chainFirstTaskEitherK` / `chainFirstTaskEitherKW`) https://github.com/gcanti/fp-ts/pull/1873 - `flatMapReaderTask` (dual) (aka `chainReaderTaskK` / `chainReaderTaskKW`) https://github.com/gcanti/fp-ts/pull/1874 - `flatMapTaskEither` (dual) (aka `chainTaskEitherK` / `chainTaskEitherKW`) https://github.com/gcanti/fp-ts/pull/1874 - `flatMapIO` (dual) (aka `chainIOK`) https://github.com/gcanti/fp-ts/pull/1874 - `Option.orElse` (dual) (aka `alt` / `altW`) https://github.com/gcanti/fp-ts/pull/1868 - `flatMapTask` (dual) (aka `chainTaskK`) https://github.com/gcanti/fp-ts/pull/1876 - `flatMapReader` (dual) (aka `chainReaderK` / `chainReaderKW`) https://github.com/gcanti/fp-ts/pull/1876 - `flatMapReaderIO` (dual) (aka `chainReaderIOK` / `chainReaderIOKW`) https://github.com/gcanti/fp-ts/pull/1879 - `flatMap*` (aka `chain*K` / `chain*KW`) https://github.com/gcanti/fp-ts/pull/1880 **2.17** - asUnit -> asVoid **TODO** (Feel free to add a comment to this issue if you want to suggest any other backporting) - ???
The following features can be backported without breaking changes:
2.14
flatMap(aka chain / chainW) add flatMap #18492.15
flatMap*(aka chain*K / chain*KW) add more flatMap* dual functions #1862tap(aka chainFirst / chainFirstW) add tap #1857tapError(aka orElseFirst / orElseFirstW) add tapError #1858LazyArg(aka Lazy) add LazyArg #18562.16
tapEither(dual) (akachainFirstEitherK/chainFirstEitherKW) feat: tapEither #1864tapIO(dual) (akachainFirstIOK) feat: tapIO #1865as/asUnitfeat: as and asUnit #1867tapTask(dual) (akachainFirstTaskK) feat: tapTask #1869mapError(dual) (akamapLeft) add mapError #1870mapBoth(dual) (akabimap) add mapBoth #1872tapReader(dual) (akachainFirstReaderK/chainFirstIReaderKW) feat: tapReader #1871tapReaderEither(dual) (akachainFirstReaderEitherK/chainFirstEitherKW) Add remaining tap*s #1873tapReaderIO(dual) (akachainFirstReaderIOK) Add remaining tap*s #1873tapReaderTask(dual) (akachainFirstReaderTaskK) Add remaining tap*s #1873tapTaskEither(dual) (akachainFirstTaskEitherK/chainFirstTaskEitherKW) Add remaining tap*s #1873flatMapReaderTask(dual) (akachainReaderTaskK/chainReaderTaskKW) Add ReaderTask, TaskEither and IO flatMaps #1874flatMapTaskEither(dual) (akachainTaskEitherK/chainTaskEitherKW) Add ReaderTask, TaskEither and IO flatMaps #1874flatMapIO(dual) (akachainIOK) Add ReaderTask, TaskEither and IO flatMaps #1874Option.orElse(dual) (akaalt/altW) Backport Option.orElse from effect/ #1868flatMapTask(dual) (akachainTaskK) AddflatMapTask&flatMapReader#1876flatMapReader(dual) (akachainReaderK/chainReaderKW) AddflatMapTask&flatMapReader#1876flatMapReaderIO(dual) (akachainReaderIOK/chainReaderIOKW) feat: flatMapReaderIO #1879flatMap*(akachain*K/chain*KW) Add remainingflatMaps #18802.17
TODO (Feel free to add a comment to this issue if you want to suggest any other backporting)