Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add withError and (Eager)Effect.mapError #3059

Merged
merged 4 commits into from
Jun 5, 2023
Merged

Conversation

kyay10
Copy link
Collaborator

@kyay10 kyay10 commented May 26, 2023

Fixes #3053
I'm not sure if mapError is the best name for it, but withError felt weird as an extension on Effect. Also, mapError's transform parameter seems too "busy" with suspend and Raise. At least the Raise<OtherError> could be removed, but then someone wanted to call a function inside that raises OtherError, they'd need to wrap in either{ ... }.merge() or something along those lines, and so I figured exposing the Raise<OtherError> might help in that case. Maybe there should be a Raise builder that merges the error and result automatically? This could be helpful especially if they're subclasses of each other.

@CLOVIS-AI

@kyay10
Copy link
Collaborator Author

kyay10 commented May 26, 2023

A merge builder looks very neat, and is dead-simple to make:

@RaiseDSL
public inline fun <A> merge(
  @BuilderInference block: Raise<A>.() -> A,
): A = recover(block, ::identity)

// Usage
val error = eagerEffect<Error, User> { raise(Error) }
val bool = false
val a = error.mapError { merge { if(bool) "some-failure" else raise("other-failure") } } // Raise(other-failure)

Maybe this should be a thing 👀. It's useful when you have a lot of functions that use Raise, and you want to also return a value of the same error that they might raise. It can also be very useful whenever Union types become a reality because then you'll get no boxing if the returned and raised types have no intersection (however, we should probably have a union builder then that has the return and error types separately inferred, but ultimately returning a union of them).

@hoc081098
Copy link
Contributor

Nice, mapError is my favorite method when using Either, Effect should have it

@CLOVIS-AI
Copy link
Contributor

What is the use-case for mapError?

  • withError: simple 1-1 pure mapping between error types
  • recover: error management, as complex as you'd like

mapError's lambda being both Raise<OtherError> and -> OtherError seems confusing to me. Raise<OtherError> is already provided by recover, -> OtherError is provided by withError. I don't see the use case for needing both?

@kyay10
Copy link
Collaborator Author

kyay10 commented May 28, 2023

@CLOVIS-AI mapError is meant to be Effect's analogue for withError. Think of it as the Effect version of Either.mapLeft. Its transform lambda taking Raise<OtherError> and returning OtherError is very ugly, I agree. The reason I exposed it is so that you can use functions that raise OtherError inside. However, with #3061, that need is met without the ugly signature. I'll update the PR with a better signature, especially because you can simulate merge with either { ... }.merge()

Copy link
Member

@nomisRev nomisRev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me @kyay10! Thank you for this improvement, and @CLOVIS-AI for the original suggestions 🙏 🙌

Thanks for the very complete work, including documentation and tests 😍

@nomisRev nomisRev requested review from serras, franciscodr and a team May 30, 2023 16:45
kyay10 and others added 2 commits May 31, 2023 04:39
Co-authored-by: Simon Vergauwen <nomisRev@users.noreply.github.com>
Copy link
Collaborator

@franciscodr franciscodr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this amazing contribution, @kyay10. The code looks neat with the new functions 😍

Copy link
Member

@serras serras left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very useful utility

@nomisRev nomisRev merged commit 722a7c0 into arrow-kt:main Jun 5, 2023
renovate bot referenced this pull request in sindrenm/android-project-template Jul 12, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[io.arrow-kt:arrow-optics-ksp-plugin](https://github.com/arrow-kt/arrow)
| `1.1.5` -> `1.2.0` |
[![age](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-optics-ksp-plugin/1.2.0/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-optics-ksp-plugin/1.2.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-optics-ksp-plugin/1.2.0/compatibility-slim/1.1.5)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-optics-ksp-plugin/1.2.0/confidence-slim/1.1.5)](https://docs.renovatebot.com/merge-confidence/)
|
| [io.arrow-kt:arrow-optics](https://github.com/arrow-kt/arrow) |
`1.1.5` -> `1.2.0` |
[![age](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-optics/1.2.0/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-optics/1.2.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-optics/1.2.0/compatibility-slim/1.1.5)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-optics/1.2.0/confidence-slim/1.1.5)](https://docs.renovatebot.com/merge-confidence/)
|
| [io.arrow-kt:arrow-core](https://github.com/arrow-kt/arrow) |
`1.1.5` -> `1.2.0` |
[![age](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-core/1.2.0/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-core/1.2.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-core/1.2.0/compatibility-slim/1.1.5)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-core/1.2.0/confidence-slim/1.1.5)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>arrow-kt/arrow (io.arrow-kt:arrow-optics-ksp-plugin)</summary>

### [`v1.2.0`](https://github.com/arrow-kt/arrow/releases/tag/1.2.0)

[Compare
Source](https://github.com/arrow-kt/arrow/compare/1.1.5...1.2.0)

#### What's Changed

- Add CNAME file to Dokka output by
[@&#8203;franciscodr](https://github.com/franciscodr) in
[https://github.com/arrow-kt/arrow/pull/3029](https://github.com/arrow-kt/arrow/pull/3029)
- Remove legacy site code by
[@&#8203;nomisRev](https://github.com/nomisRev) in
[https://github.com/arrow-kt/arrow/pull/3030](https://github.com/arrow-kt/arrow/pull/3030)
- Update README by [@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3033](https://github.com/arrow-kt/arrow/pull/3033)
- Cancel previous PR action on new commit by
[@&#8203;nomisRev](https://github.com/nomisRev) in
[https://github.com/arrow-kt/arrow/pull/3032](https://github.com/arrow-kt/arrow/pull/3032)
- Remove legacy script files by
[@&#8203;franciscodr](https://github.com/franciscodr) in
[https://github.com/arrow-kt/arrow/pull/3034](https://github.com/arrow-kt/arrow/pull/3034)
- Ensure optics type with "data" modifier is a class by
[@&#8203;DeoTimeTheGithubUser](https://github.com/DeoTimeTheGithubUser)
in
[https://github.com/arrow-kt/arrow/pull/3036](https://github.com/arrow-kt/arrow/pull/3036)
- Update all dependencies (major) by
[@&#8203;renovate](https://github.com/renovate) in
[https://github.com/arrow-kt/arrow/pull/3042](https://github.com/arrow-kt/arrow/pull/3042)
- Remove test dependency from Arrow Fx by
[@&#8203;nomisRev](https://github.com/nomisRev) in
[https://github.com/arrow-kt/arrow/pull/3046](https://github.com/arrow-kt/arrow/pull/3046)
- Bump Kotlin, KSP and coroutines version by
[@&#8203;nomisRev](https://github.com/nomisRev) in
[https://github.com/arrow-kt/arrow/pull/3047](https://github.com/arrow-kt/arrow/pull/3047)
- fix mapIndexed when collecting multiple times by
[@&#8203;hoc081098](https://github.com/hoc081098) in
[https://github.com/arrow-kt/arrow/pull/3056](https://github.com/arrow-kt/arrow/pull/3056)
- Update versions by [@&#8203;nomisRev](https://github.com/nomisRev)
in
[https://github.com/arrow-kt/arrow/pull/3058](https://github.com/arrow-kt/arrow/pull/3058)
- optics ksp plugin: fixed handling of variance
([#&#8203;3057](https://github.com/arrow-kt/arrow/issues/3057)) by
[@&#8203;vladd-g](https://github.com/vladd-g) in
[https://github.com/arrow-kt/arrow/pull/3060](https://github.com/arrow-kt/arrow/pull/3060)
- Fixes recover inconsistency with raise DSL on types other than Either
by [@&#8203;yoxjames](https://github.com/yoxjames) in
[https://github.com/arrow-kt/arrow/pull/3052](https://github.com/arrow-kt/arrow/pull/3052)
- Change NonEmptySet type parameter name from T to A by
[@&#8203;franciscodr](https://github.com/franciscodr) in
[https://github.com/arrow-kt/arrow/pull/3062](https://github.com/arrow-kt/arrow/pull/3062)
- Add withError and (Eager)Effect.mapError by
[@&#8203;kyay10](https://github.com/kyay10) in
[https://github.com/arrow-kt/arrow/pull/3059](https://github.com/arrow-kt/arrow/pull/3059)
- Update versions of several libraries by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3017](https://github.com/arrow-kt/arrow/pull/3017)
- Add merge builder for raise by
[@&#8203;kyay10](https://github.com/kyay10) in
[https://github.com/arrow-kt/arrow/pull/3061](https://github.com/arrow-kt/arrow/pull/3061)
- Update all dependencies by
[@&#8203;renovate](https://github.com/renovate) in
[https://github.com/arrow-kt/arrow/pull/3065](https://github.com/arrow-kt/arrow/pull/3065)
- Update dependency gradle to v8.2 by
[@&#8203;renovate](https://github.com/renovate) in
[https://github.com/arrow-kt/arrow/pull/3070](https://github.com/arrow-kt/arrow/pull/3070)
- Fix warnings of single-subclass sealed classes by
[@&#8203;jooohn](https://github.com/jooohn) in
[https://github.com/arrow-kt/arrow/pull/3067](https://github.com/arrow-kt/arrow/pull/3067)
- KDoc for `Raise#raise`, `Raise#ensure` and `Raise#ensureNotNull` by
[@&#8203;ILIYANGERMANOV](https://github.com/ILIYANGERMANOV) in
[https://github.com/arrow-kt/arrow/pull/3038](https://github.com/arrow-kt/arrow/pull/3038)
- Fix text repetition in EffectScope's deprecation message by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3072](https://github.com/arrow-kt/arrow/pull/3072)
- Introduce `NonEmptyCollection` by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3068](https://github.com/arrow-kt/arrow/pull/3068)
- Set up Spotless by [@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3075](https://github.com/arrow-kt/arrow/pull/3075)
- Update all dependencies by
[@&#8203;renovate](https://github.com/renovate) in
[https://github.com/arrow-kt/arrow/pull/3079](https://github.com/arrow-kt/arrow/pull/3079)
- Add option to disable `inline` when using `@optics` by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3078](https://github.com/arrow-kt/arrow/pull/3078)
- Update JS versions in `yarn.lock` by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3084](https://github.com/arrow-kt/arrow/pull/3084)
- Enable Automatic Modules for JVM by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3071](https://github.com/arrow-kt/arrow/pull/3071)
- Serialization module by [@&#8203;serras](https://github.com/serras)
in
[https://github.com/arrow-kt/arrow/pull/3077](https://github.com/arrow-kt/arrow/pull/3077)
- Add missing docs for `Raise` operations by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3082](https://github.com/arrow-kt/arrow/pull/3082)
- Add mapOrAccumulate extension in RaiseAccumulate by
[@&#8203;nomisRev](https://github.com/nomisRev) in
[https://github.com/arrow-kt/arrow/pull/3086](https://github.com/arrow-kt/arrow/pull/3086)
- Additional tests for `copy` in Optics by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3089](https://github.com/arrow-kt/arrow/pull/3089)
- Apply Gradle Versioning in top project by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3092](https://github.com/arrow-kt/arrow/pull/3092)
- Add missing Versioning plug-in to `arrow-core-retrofit` by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3093](https://github.com/arrow-kt/arrow/pull/3093)
- Update `arrow-gradle-config` to 0.12-rc.4 by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3094](https://github.com/arrow-kt/arrow/pull/3094)
- MemoizedDeepRecursiveFunction by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3091](https://github.com/arrow-kt/arrow/pull/3091)
- Add reset and barrierAction to CyclicBarrier. by
[@&#8203;HSAR](https://github.com/HSAR) in
[https://github.com/arrow-kt/arrow/pull/3055](https://github.com/arrow-kt/arrow/pull/3055)
- \[HOTFIX] Fix main publish by
[@&#8203;nomisRev](https://github.com/nomisRev) in
[https://github.com/arrow-kt/arrow/pull/3095](https://github.com/arrow-kt/arrow/pull/3095)

#### New Contributors

-
[@&#8203;DeoTimeTheGithubUser](https://github.com/DeoTimeTheGithubUser)
made their first contribution in
[https://github.com/arrow-kt/arrow/pull/3036](https://github.com/arrow-kt/arrow/pull/3036)
- [@&#8203;vladd-g](https://github.com/vladd-g) made their first
contribution in
[https://github.com/arrow-kt/arrow/pull/3060](https://github.com/arrow-kt/arrow/pull/3060)
- [@&#8203;yoxjames](https://github.com/yoxjames) made their first
contribution in
[https://github.com/arrow-kt/arrow/pull/3052](https://github.com/arrow-kt/arrow/pull/3052)
- [@&#8203;kyay10](https://github.com/kyay10) made their first
contribution in
[https://github.com/arrow-kt/arrow/pull/3059](https://github.com/arrow-kt/arrow/pull/3059)
- [@&#8203;jooohn](https://github.com/jooohn) made their first
contribution in
[https://github.com/arrow-kt/arrow/pull/3067](https://github.com/arrow-kt/arrow/pull/3067)
- [@&#8203;ILIYANGERMANOV](https://github.com/ILIYANGERMANOV) made
their first contribution in
[https://github.com/arrow-kt/arrow/pull/3038](https://github.com/arrow-kt/arrow/pull/3038)
- [@&#8203;HSAR](https://github.com/HSAR) made their first
contribution in
[https://github.com/arrow-kt/arrow/pull/3055](https://github.com/arrow-kt/arrow/pull/3055)

**Full Changelog**:
arrow-kt/arrow@1.2.0-RC...1.2.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/sindrenm/android-project-template).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi41LjMiLCJ1cGRhdGVkSW5WZXIiOiIzNi41LjMiLCJ0YXJnZXRCcmFuY2giOiJtYWluIn0=-->
github-merge-queue bot referenced this pull request in elide-dev/elide Jul 23, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [io.arrow-kt:arrow-fx-coroutines](https://github.com/arrow-kt/arrow)
| `1.1.3` -> `1.2.0` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/io.arrow-kt:arrow-fx-coroutines/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/io.arrow-kt:arrow-fx-coroutines/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/io.arrow-kt:arrow-fx-coroutines/1.1.3/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.arrow-kt:arrow-fx-coroutines/1.1.3/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[io.arrow-kt:arrow-optics-ksp-plugin](https://github.com/arrow-kt/arrow)
| `1.1.3` -> `1.2.0` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/io.arrow-kt:arrow-optics-ksp-plugin/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/io.arrow-kt:arrow-optics-ksp-plugin/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/io.arrow-kt:arrow-optics-ksp-plugin/1.1.3/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.arrow-kt:arrow-optics-ksp-plugin/1.1.3/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [io.arrow-kt:arrow-optics](https://github.com/arrow-kt/arrow) |
`1.1.3` -> `1.2.0` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/io.arrow-kt:arrow-optics/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/io.arrow-kt:arrow-optics/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/io.arrow-kt:arrow-optics/1.1.3/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.arrow-kt:arrow-optics/1.1.3/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [io.arrow-kt:arrow-core](https://github.com/arrow-kt/arrow) |
`1.1.3` -> `1.2.0` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/io.arrow-kt:arrow-core/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/io.arrow-kt:arrow-core/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/io.arrow-kt:arrow-core/1.1.3/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.arrow-kt:arrow-core/1.1.3/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [io.arrow-kt:arrow-stack](https://github.com/arrow-kt/arrow) |
`1.1.3` -> `1.2.0` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/io.arrow-kt:arrow-stack/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/io.arrow-kt:arrow-stack/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/io.arrow-kt:arrow-stack/1.1.3/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.arrow-kt:arrow-stack/1.1.3/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### ⚠ Dependency Lookup Warnings ⚠

Warnings were logged while processing this repo. Please check the
Dependency Dashboard for more information.

---

### Release Notes

<details>
<summary>arrow-kt/arrow (io.arrow-kt:arrow-fx-coroutines)</summary>

### [`v1.2.0`](https://github.com/arrow-kt/arrow/releases/tag/1.2.0)

[Compare
Source](https://github.com/arrow-kt/arrow/compare/1.1.5...1.2.0)

##### What's Changed

- Add CNAME file to Dokka output by
[@&#8203;franciscodr](https://github.com/franciscodr) in
[https://github.com/arrow-kt/arrow/pull/3029](https://github.com/arrow-kt/arrow/pull/3029)
- Remove legacy site code by
[@&#8203;nomisRev](https://github.com/nomisRev) in
[https://github.com/arrow-kt/arrow/pull/3030](https://github.com/arrow-kt/arrow/pull/3030)
- Update README by [@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3033](https://github.com/arrow-kt/arrow/pull/3033)
- Cancel previous PR action on new commit by
[@&#8203;nomisRev](https://github.com/nomisRev) in
[https://github.com/arrow-kt/arrow/pull/3032](https://github.com/arrow-kt/arrow/pull/3032)
- Remove legacy script files by
[@&#8203;franciscodr](https://github.com/franciscodr) in
[https://github.com/arrow-kt/arrow/pull/3034](https://github.com/arrow-kt/arrow/pull/3034)
- Ensure optics type with "data" modifier is a class by
[@&#8203;DeoTimeTheGithubUser](https://github.com/DeoTimeTheGithubUser)
in
[https://github.com/arrow-kt/arrow/pull/3036](https://github.com/arrow-kt/arrow/pull/3036)
- Update all dependencies (major) by
[@&#8203;renovate](https://github.com/renovate) in
[https://github.com/arrow-kt/arrow/pull/3042](https://github.com/arrow-kt/arrow/pull/3042)
- Remove test dependency from Arrow Fx by
[@&#8203;nomisRev](https://github.com/nomisRev) in
[https://github.com/arrow-kt/arrow/pull/3046](https://github.com/arrow-kt/arrow/pull/3046)
- Bump Kotlin, KSP and coroutines version by
[@&#8203;nomisRev](https://github.com/nomisRev) in
[https://github.com/arrow-kt/arrow/pull/3047](https://github.com/arrow-kt/arrow/pull/3047)
- fix mapIndexed when collecting multiple times by
[@&#8203;hoc081098](https://github.com/hoc081098) in
[https://github.com/arrow-kt/arrow/pull/3056](https://github.com/arrow-kt/arrow/pull/3056)
- Update versions by [@&#8203;nomisRev](https://github.com/nomisRev)
in
[https://github.com/arrow-kt/arrow/pull/3058](https://github.com/arrow-kt/arrow/pull/3058)
- optics ksp plugin: fixed handling of variance
([#&#8203;3057](https://github.com/arrow-kt/arrow/issues/3057)) by
[@&#8203;vladd-g](https://github.com/vladd-g) in
[https://github.com/arrow-kt/arrow/pull/3060](https://github.com/arrow-kt/arrow/pull/3060)
- Fixes recover inconsistency with raise DSL on types other than Either
by [@&#8203;yoxjames](https://github.com/yoxjames) in
[https://github.com/arrow-kt/arrow/pull/3052](https://github.com/arrow-kt/arrow/pull/3052)
- Change NonEmptySet type parameter name from T to A by
[@&#8203;franciscodr](https://github.com/franciscodr) in
[https://github.com/arrow-kt/arrow/pull/3062](https://github.com/arrow-kt/arrow/pull/3062)
- Add withError and (Eager)Effect.mapError by
[@&#8203;kyay10](https://github.com/kyay10) in
[https://github.com/arrow-kt/arrow/pull/3059](https://github.com/arrow-kt/arrow/pull/3059)
- Update versions of several libraries by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3017](https://github.com/arrow-kt/arrow/pull/3017)
- Add merge builder for raise by
[@&#8203;kyay10](https://github.com/kyay10) in
[https://github.com/arrow-kt/arrow/pull/3061](https://github.com/arrow-kt/arrow/pull/3061)
- Update all dependencies by
[@&#8203;renovate](https://github.com/renovate) in
[https://github.com/arrow-kt/arrow/pull/3065](https://github.com/arrow-kt/arrow/pull/3065)
- Update dependency gradle to v8.2 by
[@&#8203;renovate](https://github.com/renovate) in
[https://github.com/arrow-kt/arrow/pull/3070](https://github.com/arrow-kt/arrow/pull/3070)
- Fix warnings of single-subclass sealed classes by
[@&#8203;jooohn](https://github.com/jooohn) in
[https://github.com/arrow-kt/arrow/pull/3067](https://github.com/arrow-kt/arrow/pull/3067)
- KDoc for `Raise#raise`, `Raise#ensure` and `Raise#ensureNotNull` by
[@&#8203;ILIYANGERMANOV](https://github.com/ILIYANGERMANOV) in
[https://github.com/arrow-kt/arrow/pull/3038](https://github.com/arrow-kt/arrow/pull/3038)
- Fix text repetition in EffectScope's deprecation message by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3072](https://github.com/arrow-kt/arrow/pull/3072)
- Introduce `NonEmptyCollection` by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3068](https://github.com/arrow-kt/arrow/pull/3068)
- Set up Spotless by [@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3075](https://github.com/arrow-kt/arrow/pull/3075)
- Update all dependencies by
[@&#8203;renovate](https://github.com/renovate) in
[https://github.com/arrow-kt/arrow/pull/3079](https://github.com/arrow-kt/arrow/pull/3079)
- Add option to disable `inline` when using `@optics` by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3078](https://github.com/arrow-kt/arrow/pull/3078)
- Update JS versions in `yarn.lock` by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3084](https://github.com/arrow-kt/arrow/pull/3084)
- Enable Automatic Modules for JVM by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3071](https://github.com/arrow-kt/arrow/pull/3071)
- Serialization module by [@&#8203;serras](https://github.com/serras)
in
[https://github.com/arrow-kt/arrow/pull/3077](https://github.com/arrow-kt/arrow/pull/3077)
- Add missing docs for `Raise` operations by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3082](https://github.com/arrow-kt/arrow/pull/3082)
- Add mapOrAccumulate extension in RaiseAccumulate by
[@&#8203;nomisRev](https://github.com/nomisRev) in
[https://github.com/arrow-kt/arrow/pull/3086](https://github.com/arrow-kt/arrow/pull/3086)
- Additional tests for `copy` in Optics by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3089](https://github.com/arrow-kt/arrow/pull/3089)
- Apply Gradle Versioning in top project by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3092](https://github.com/arrow-kt/arrow/pull/3092)
- Add missing Versioning plug-in to `arrow-core-retrofit` by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3093](https://github.com/arrow-kt/arrow/pull/3093)
- Update `arrow-gradle-config` to 0.12-rc.4 by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3094](https://github.com/arrow-kt/arrow/pull/3094)
- MemoizedDeepRecursiveFunction by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/3091](https://github.com/arrow-kt/arrow/pull/3091)
- Add reset and barrierAction to CyclicBarrier. by
[@&#8203;HSAR](https://github.com/HSAR) in
[https://github.com/arrow-kt/arrow/pull/3055](https://github.com/arrow-kt/arrow/pull/3055)
- \[HOTFIX] Fix main publish by
[@&#8203;nomisRev](https://github.com/nomisRev) in
[https://github.com/arrow-kt/arrow/pull/3095](https://github.com/arrow-kt/arrow/pull/3095)

##### New Contributors

-
[@&#8203;DeoTimeTheGithubUser](https://github.com/DeoTimeTheGithubUser)
made their first contribution in
[https://github.com/arrow-kt/arrow/pull/3036](https://github.com/arrow-kt/arrow/pull/3036)
- [@&#8203;vladd-g](https://github.com/vladd-g) made their first
contribution in
[https://github.com/arrow-kt/arrow/pull/3060](https://github.com/arrow-kt/arrow/pull/3060)
- [@&#8203;yoxjames](https://github.com/yoxjames) made their first
contribution in
[https://github.com/arrow-kt/arrow/pull/3052](https://github.com/arrow-kt/arrow/pull/3052)
- [@&#8203;kyay10](https://github.com/kyay10) made their first
contribution in
[https://github.com/arrow-kt/arrow/pull/3059](https://github.com/arrow-kt/arrow/pull/3059)
- [@&#8203;jooohn](https://github.com/jooohn) made their first
contribution in
[https://github.com/arrow-kt/arrow/pull/3067](https://github.com/arrow-kt/arrow/pull/3067)
- [@&#8203;ILIYANGERMANOV](https://github.com/ILIYANGERMANOV) made
their first contribution in
[https://github.com/arrow-kt/arrow/pull/3038](https://github.com/arrow-kt/arrow/pull/3038)
- [@&#8203;HSAR](https://github.com/HSAR) made their first
contribution in
[https://github.com/arrow-kt/arrow/pull/3055](https://github.com/arrow-kt/arrow/pull/3055)

**Full Changelog**:
arrow-kt/arrow@1.2.0-RC...1.2.0

### [`v1.1.5`](https://github.com/arrow-kt/arrow/releases/tag/1.1.5)

[Compare
Source](https://github.com/arrow-kt/arrow/compare/1.1.4...1.1.5)

#### What's Changed

- Remove `test` modules by [@&#8203;serras](https://github.com/serras)
in
[https://github.com/arrow-kt/arrow/pull/2874](https://github.com/arrow-kt/arrow/pull/2874)
- Mention Arrow 2.0 in README by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/2878](https://github.com/arrow-kt/arrow/pull/2878)
- Prisms for Either by [@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/2877](https://github.com/arrow-kt/arrow/pull/2877)
- Test 1.8.0 on CI by [@&#8203;nomisRev](https://github.com/nomisRev)
in
[https://github.com/arrow-kt/arrow/pull/2864](https://github.com/arrow-kt/arrow/pull/2864)
- Implement 'align' using 'buildList' by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/2886](https://github.com/arrow-kt/arrow/pull/2886)
- Improve debugging experience of leaked shift calls by
[@&#8203;nomisRev](https://github.com/nomisRev) in
[https://github.com/arrow-kt/arrow/pull/2884](https://github.com/arrow-kt/arrow/pull/2884)
- Fix knitCheck & re-add check by
[@&#8203;nomisRev](https://github.com/nomisRev) in
[https://github.com/arrow-kt/arrow/pull/2887](https://github.com/arrow-kt/arrow/pull/2887)

**Full Changelog**:
arrow-kt/arrow@1.1.4...1.1.5

### [`v1.1.4`](https://github.com/arrow-kt/arrow/releases/tag/1.1.4)

[Compare
Source](https://github.com/arrow-kt/arrow/compare/1.1.3...1.1.4)

#### What's Changed

- \[2743] Migrate internal use of CircuitBreaker double to duration by
[@&#8203;mjmoore](https://github.com/mjmoore) in
[https://github.com/arrow-kt/arrow/pull/2748](https://github.com/arrow-kt/arrow/pull/2748)
- Fix typo by [@&#8203;valery1707](https://github.com/valery1707) in
[https://github.com/arrow-kt/arrow/pull/2824](https://github.com/arrow-kt/arrow/pull/2824)
- Make the server disconnect test more general by
[@&#8203;lukasz-kalnik-gcx](https://github.com/lukasz-kalnik-gcx) in
[https://github.com/arrow-kt/arrow/pull/2822](https://github.com/arrow-kt/arrow/pull/2822)
- Update NonEmptyList.fromList deprecation to suggest `toOption()`
instead by [@&#8203;StylianosGakis](https://github.com/StylianosGakis)
in
[https://github.com/arrow-kt/arrow/pull/2832](https://github.com/arrow-kt/arrow/pull/2832)
- Improve Either.getOrHandle() docs by
[@&#8203;lukasz-kalnik-gcx](https://github.com/lukasz-kalnik-gcx) in
[https://github.com/arrow-kt/arrow/pull/2833](https://github.com/arrow-kt/arrow/pull/2833)
- Correct `addressStrees` -> `addressStreet` in optics documentation by
[@&#8203;vikrem](https://github.com/vikrem) in
[https://github.com/arrow-kt/arrow/pull/2836](https://github.com/arrow-kt/arrow/pull/2836)
- Arrow Fx: deprecate Platform#composeError, never and unit() by
[@&#8203;nomisRev](https://github.com/nomisRev) in
[https://github.com/arrow-kt/arrow/pull/2837](https://github.com/arrow-kt/arrow/pull/2837)
- Backport Optics KSP plugin NPE on multiplatform fix by
[@&#8203;cvb941](https://github.com/cvb941) in
[https://github.com/arrow-kt/arrow/pull/2840](https://github.com/arrow-kt/arrow/pull/2840)
- Refactor -
[#&#8203;2812](https://github.com/arrow-kt/arrow/issues/2812) sequence
separate performance by [@&#8203;Khepu](https://github.com/Khepu) in
[https://github.com/arrow-kt/arrow/pull/2818](https://github.com/arrow-kt/arrow/pull/2818)
- Use `super` equals and hashCode overrides for NonEmptyList by
[@&#8203;RusticFlare](https://github.com/RusticFlare) in
[https://github.com/arrow-kt/arrow/pull/2825](https://github.com/arrow-kt/arrow/pull/2825)
- Resource API deprecation, and preparation for 2.x.x. & back port
improvements by [@&#8203;nomisRev](https://github.com/nomisRev) in
[https://github.com/arrow-kt/arrow/pull/2847](https://github.com/arrow-kt/arrow/pull/2847)
- introduce iterable.toNonEmptyListOrNone() by
[@&#8203;myuwono](https://github.com/myuwono) in
[https://github.com/arrow-kt/arrow/pull/2843](https://github.com/arrow-kt/arrow/pull/2843)
- \[PROPOSAL] Either API deprecation, and preparation for 2.x.x by
[@&#8203;nomisRev](https://github.com/nomisRev) in
[https://github.com/arrow-kt/arrow/pull/2830](https://github.com/arrow-kt/arrow/pull/2830)
- Use major versions in GitHub Actions by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/2849](https://github.com/arrow-kt/arrow/pull/2849)
- Weaken Either monoid dependencies to only require a semigroup on left
by [@&#8203;mjvmroz](https://github.com/mjvmroz) in
[https://github.com/arrow-kt/arrow/pull/2845](https://github.com/arrow-kt/arrow/pull/2845)
- Do not reuse the name of the file in Optics KSP by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/2850](https://github.com/arrow-kt/arrow/pull/2850)
- Additional deprecations, and backports for JVM by
[@&#8203;nomisRev](https://github.com/nomisRev) in
[https://github.com/arrow-kt/arrow/pull/2856](https://github.com/arrow-kt/arrow/pull/2856)
- Update various versions by
[@&#8203;serras](https://github.com/serras) in
[https://github.com/arrow-kt/arrow/pull/2852](https://github.com/arrow-kt/arrow/pull/2852)
- Add CountDownLatch by
[@&#8203;nomisRev](https://github.com/nomisRev) in
[https://github.com/arrow-kt/arrow/pull/2854](https://github.com/arrow-kt/arrow/pull/2854)
- Add CyclicBarrier by [@&#8203;nomisRev](https://github.com/nomisRev)
in
[https://github.com/arrow-kt/arrow/pull/2857](https://github.com/arrow-kt/arrow/pull/2857)
- Temp rollback error handling deprecations until 1.2.x by
[@&#8203;nomisRev](https://github.com/nomisRev) in
[https://github.com/arrow-kt/arrow/pull/2858](https://github.com/arrow-kt/arrow/pull/2858)
- Setup Kover as test coverage tool by
[@&#8203;MarkMarkyMarkus](https://github.com/MarkMarkyMarkus) in
[https://github.com/arrow-kt/arrow/pull/2793](https://github.com/arrow-kt/arrow/pull/2793)
- Fix Monad.either binary combat by
[@&#8203;nomisRev](https://github.com/nomisRev) in
[https://github.com/arrow-kt/arrow/pull/2867](https://github.com/arrow-kt/arrow/pull/2867)
- Backport: MPP No Trace by
[@&#8203;nomisRev](https://github.com/nomisRev) in
[https://github.com/arrow-kt/arrow/pull/2869](https://github.com/arrow-kt/arrow/pull/2869)

#### New Contributors

- [@&#8203;mjmoore](https://github.com/mjmoore) made their first
contribution in
[https://github.com/arrow-kt/arrow/pull/2748](https://github.com/arrow-kt/arrow/pull/2748)
- [@&#8203;valery1707](https://github.com/valery1707) made their first
contribution in
[https://github.com/arrow-kt/arrow/pull/2824](https://github.com/arrow-kt/arrow/pull/2824)
- [@&#8203;lukasz-kalnik-gcx](https://github.com/lukasz-kalnik-gcx)
made their first contribution in
[https://github.com/arrow-kt/arrow/pull/2822](https://github.com/arrow-kt/arrow/pull/2822)
- [@&#8203;StylianosGakis](https://github.com/StylianosGakis) made
their first contribution in
[https://github.com/arrow-kt/arrow/pull/2832](https://github.com/arrow-kt/arrow/pull/2832)
- [@&#8203;vikrem](https://github.com/vikrem) made their first
contribution in
[https://github.com/arrow-kt/arrow/pull/2836](https://github.com/arrow-kt/arrow/pull/2836)
- [@&#8203;cvb941](https://github.com/cvb941) made their first
contribution in
[https://github.com/arrow-kt/arrow/pull/2840](https://github.com/arrow-kt/arrow/pull/2840)
- [@&#8203;RusticFlare](https://github.com/RusticFlare) made their
first contribution in
[https://github.com/arrow-kt/arrow/pull/2825](https://github.com/arrow-kt/arrow/pull/2825)
- [@&#8203;mjvmroz](https://github.com/mjvmroz) made their first
contribution in
[https://github.com/arrow-kt/arrow/pull/2845](https://github.com/arrow-kt/arrow/pull/2845)
- [@&#8203;MarkMarkyMarkus](https://github.com/MarkMarkyMarkus) made
their first contribution in
[https://github.com/arrow-kt/arrow/pull/2793](https://github.com/arrow-kt/arrow/pull/2793)

**Full Changelog**:
arrow-kt/arrow@1.1.3...1.1.4-rc.3

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/elide-dev/elide).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4xMS4wIiwidXBkYXRlZEluVmVyIjoiMzYuMTEuMCIsInRhcmdldEJyYW5jaCI6InYzIn0=-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

["Request"] Error mapper utility
6 participants