-
Notifications
You must be signed in to change notification settings - Fork 449
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
catch for EffectScope #2746
catch for EffectScope #2746
Conversation
* The [handler] may `shift` into a different `ErrorScope`, which is useful to | ||
* simulate re-throwing of exceptions. | ||
*/ | ||
public suspend fun<E, R, A> EffectScope<E>.catch( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Needs to be an extension due to variance?
This duplicates behaviour with handleErrorXXX
but it exposes a nicer lambda for handler
where you can leverage the DSL again by exposing EffectScope<E>
on the receiver of the lambda.
I am absolutely up for improving these APIs, and renaming them but we should probably avoid duplicated APIs as much as possible to keep the API surface reasonable.
That being said this signatures reminds me a lot of Flow#catch
, and it uses the same naming so I am in favour of catch
over the current handleErrorXXX
& redeemXXX
methods. This seems to cover all 4 APIs with a single nice API.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For me the question is how much of the API should be exposed via EffectScope<E>
as opposed to Effect
. Personally, I'd prefer to stay within the realm of EffectScope
as much as I could, and only refer to Effect
to "run" the action at the very top level. But I also see this is very much a design choice, so I'll be happy with whatever decision you take.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
About not being an extension, I just wrote it directly like that, although it could also be part of EffectScope
itself. In fact, this opens the decades-old debate: it catch
part of the "error effect", or is it a "effect transformer" (my definition of catch
says that the latter).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This also an alternative, using the UnsafeVariance
, which is fine here.
// in EffectScope interface
public suspend fun <B> Effect<R, B>.catch(recover: suspend EffectScope<R>.(@UnsafeVariance R) -> B): B =
fold({ recover(it) }, ::identity)
we can also have the Effect be a parameter, if this is a better encoding
If we speak in terms of |
Or we can go with |
arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/continuations/EffectScope.kt
Outdated
Show resolved
Hide resolved
I am also in favour of remaining with one naming convention - here in favour of |
@serras I thought
While I personally agree with this, I don't expect this to become the most popular usage in Kotlin/Arrow. That heavily depends though on how we want to model Arrow towards 2.0. Which I think with all these new changes is on the horizon. For example, a really cool usage which I think would be popular is the following. suspend fun fetchUser(id: UUID): Either<DbError, User> = ...
// This pattern covers handleErrorWith, handleError, redeem & redeemWith
either<ServiceError, ServiceUser> {
catch({ fetchUser(uuid) }) { dbError ->
shift(dbError.toServiceError())
}
} This is also another example for me that people will not feel that It's also 100% in line with what KotlinX Coroutines already exposes in its datatypes (Flow). |
One more design question, after looking at { fetchUser(uuid) }.catch { dbError -> shift(dbError.toServiceError()) } However, I don't know how to write such function (since there's already a receiver), nor whether that would be good for our use case. Another possibility is to mark the function infix, so we can write: { fetchUser(uuid) } catch { dbError -> shift(dbError.toServiceError()) } but maybe then we get a conflict due to a keyword being used. |
My understanding was that |
I'm personally not a big fun of these APIs, since they don't play well with inference and they most of the times don't show up in auto-completion. Maybe KotlinX Coroutines in also takes similar approach of DSL-like blocks for |
public fun<E, R, A> EagerEffectScope<E>.catch( | ||
f: suspend EagerEffectScope<R>.() -> A, | ||
recover: EagerEffectScope<E>.(R) -> A | ||
): A = eagerEffect(f).fold( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
NIT: Recover first, operation last.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also for a DSL like this? I know it's the convention for bimap
, fold
etc but to me it feels counter-intuitive here since this models an operation like try { } catch { }
but for typed errors.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looking at things like Flow's catch
, I think that the convention is action, then recovery.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @serras, going through our discussion I prefer the original encoding too. And it gives us room in case we come up with improvements.
I corrected an earlier review above
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
About not being an extension, I just wrote it directly like that, although it could also be part of EffectScope itself. In fact, this opens the decades-old debate: it catch part of the "error effect", or is it a "effect transformer" (my definition of catch says that the latter).
Sorry @serras I don't want to drag this out 😅 These APIs are paving the way to new great stuff in Arrow so I think they deserve a little bit of extra attention (and nit picky 🙈)
Currently as it stands it requires import arrow.core.continuations.catch
, and it'll be listed last when suggesting APIs in IntelliJ IIRC since members get preference and don't require an import in Kotlin.
So IMO the ergonomics are better as a member of EffectScope
, but since R
is defined as out
it would require @UnsafeVariance
as @i-walker suggested. And I think that hinders other ergonomics. I.e. that you cannot "upcast"? (right? 🤔)
@nomisRev and I have been working a bit on the ergonomics, and came to a two-step blocks, attempt { /* something */ } catch { e -> /* handle e */ } We found no other (easy) way for the compiler to infer the types of every block, a problem that surfaced once I started adding tests. |
Using |
The only other name appart from |
arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/continuations/EagerEffectScope.kt
Show resolved
Hide resolved
arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/continuations/EagerEffectScope.kt
Outdated
Show resolved
Hide resolved
arrow-libs/core/arrow-core/src/commonTest/kotlin/arrow/core/continuations/EffectSpec.kt
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for this great new API @serras 👏 🥳
This is another huge improvement towards Arrow 2.0 🎉
* <!--- KNIT example-effect-scope-09.kt --> | ||
*/ | ||
public suspend infix fun <E, A> (suspend EffectScope<E>.() -> A).catch( | ||
recover: EffectScope<R>.(E) -> A, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should this not be recover: suspend EffectScope<R>.(E) -> A
? My eye only fell on this just now.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, the handler executes in the same context available to the outer thing (which is called R here). The idea is that you “close over” errors of type E, and may turn them into errors of type R, if that makes sense.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, makes sense but not sure I understand why suspend is not allowed in recover 🤔
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Doesn’t this prevent you from calling shift or bind?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, I forgot it when I moved it from being an extension function! I’ll push an update tonight.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome, feel free to merge after! Great contribution, excited to see this getting merged 🥳
arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/continuations/EagerEffectScope.kt
Show resolved
Hide resolved
…ntinuations/EagerEffectScope.kt Co-authored-by: Imran Malic Settuba <[email protected]>
@@ -109,6 +110,32 @@ class EffectSpec : | |||
} | |||
} | |||
|
|||
"attempt - catch" { | |||
checkAll(Arb.int(), Arb.long()) { i, l -> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we add these tests for EagerEffect too? I think we’ll run into the issue that shift cannot be called from the EagerEffect catch method, but I’m not 100% sure.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like we're able to use shift since attempt is within a suspend EagerEffectScope.() -> A
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you @serras! I was wrong 😁
@i-walker after our meeting today I'm not sure whether I should merge this or not. If you say yes, I'll do it :) |
No, go ahead this is fine to be merged :) @serras |
[![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://togithub.com/arrow-kt/arrow) | `1.0.1` -> `1.1.3` | [![age](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-fx-coroutines/1.1.3/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-fx-coroutines/1.1.3/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-fx-coroutines/1.1.3/compatibility-slim/1.0.1)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-fx-coroutines/1.1.3/confidence-slim/1.0.1)](https://docs.renovatebot.com/merge-confidence/) | | [io.arrow-kt:arrow-optics-ksp-plugin](https://togithub.com/arrow-kt/arrow) | `1.0.1` -> `1.1.3` | [![age](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-optics-ksp-plugin/1.1.3/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-optics-ksp-plugin/1.1.3/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-optics-ksp-plugin/1.1.3/compatibility-slim/1.0.1)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-optics-ksp-plugin/1.1.3/confidence-slim/1.0.1)](https://docs.renovatebot.com/merge-confidence/) | | [io.arrow-kt:arrow-optics](https://togithub.com/arrow-kt/arrow) | `1.0.1` -> `1.1.3` | [![age](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-optics/1.1.3/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-optics/1.1.3/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-optics/1.1.3/compatibility-slim/1.0.1)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-optics/1.1.3/confidence-slim/1.0.1)](https://docs.renovatebot.com/merge-confidence/) | | [io.arrow-kt:arrow-core](https://togithub.com/arrow-kt/arrow) | `1.0.1` -> `1.1.3` | [![age](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-core/1.1.3/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-core/1.1.3/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-core/1.1.3/compatibility-slim/1.0.1)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-core/1.1.3/confidence-slim/1.0.1)](https://docs.renovatebot.com/merge-confidence/) | | [io.arrow-kt:arrow-stack](https://togithub.com/arrow-kt/arrow) | `1.0.1` -> `1.1.3` | [![age](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-stack/1.1.3/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-stack/1.1.3/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-stack/1.1.3/compatibility-slim/1.0.1)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/maven/io.arrow-kt:arrow-stack/1.1.3/confidence-slim/1.0.1)](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</summary> ### [`v1.1.3`](https://togithub.com/arrow-kt/arrow/releases/tag/1.1.3) [Compare Source](https://togithub.com/arrow-kt/arrow/compare/1.1.2...1.1.3) #### What's Changed - Fix license url by [@​i-walker](https://togithub.com/i-walker) in [https://github.com/arrow-kt/arrow/pull/2712](https://togithub.com/arrow-kt/arrow/pull/2712) - Add new workflow for publishing the landing page by [@​franciscodr](https://togithub.com/franciscodr) in [https://github.com/arrow-kt/arrow/pull/2716](https://togithub.com/arrow-kt/arrow/pull/2716) - Fix publish sync by [@​JavierSegoviaCordoba](https://togithub.com/JavierSegoviaCordoba) in [https://github.com/arrow-kt/arrow/pull/2717](https://togithub.com/arrow-kt/arrow/pull/2717) - invert resource release order by [@​tKe](https://togithub.com/tKe) in [https://github.com/arrow-kt/arrow/pull/2714](https://togithub.com/arrow-kt/arrow/pull/2714) - Fix traversal code samples of docs by [@​b-schwab](https://togithub.com/b-schwab) in [https://github.com/arrow-kt/arrow/pull/2719](https://togithub.com/arrow-kt/arrow/pull/2719) - Adding kotlin-js-store folder by [@​franciscodr](https://togithub.com/franciscodr) in [https://github.com/arrow-kt/arrow/pull/2724](https://togithub.com/arrow-kt/arrow/pull/2724) - rename traverseX and sequenceX functions in core by [@​i-walker](https://togithub.com/i-walker) in [https://github.com/arrow-kt/arrow/pull/2715](https://togithub.com/arrow-kt/arrow/pull/2715) - feat: contravariance for R, A in Effect, EagerEffect and `in` for \*EffectScope by [@​i-walker](https://togithub.com/i-walker) in [https://github.com/arrow-kt/arrow/pull/2722](https://togithub.com/arrow-kt/arrow/pull/2722) - deprecate flatMap and map in EagerEffect by [@​i-walker](https://togithub.com/i-walker) in [https://github.com/arrow-kt/arrow/pull/2726](https://togithub.com/arrow-kt/arrow/pull/2726) - add Continuations and programs to overview section in arrow core by [@​i-walker](https://togithub.com/i-walker) in [https://github.com/arrow-kt/arrow/pull/2723](https://togithub.com/arrow-kt/arrow/pull/2723) - Update all dependencies by [@​renovate](https://togithub.com/renovate) in [https://github.com/arrow-kt/arrow/pull/2709](https://togithub.com/arrow-kt/arrow/pull/2709) - revert java setup by [@​i-walker](https://togithub.com/i-walker) in [https://github.com/arrow-kt/arrow/pull/2730](https://togithub.com/arrow-kt/arrow/pull/2730) - Add command to install bundler by [@​franciscodr](https://togithub.com/franciscodr) in [https://github.com/arrow-kt/arrow/pull/2729](https://togithub.com/arrow-kt/arrow/pull/2729) - Improve Nel constructor by [@​nomisRev](https://togithub.com/nomisRev) in [https://github.com/arrow-kt/arrow/pull/2728](https://togithub.com/arrow-kt/arrow/pull/2728) - improve generate-tag workflow by [@​i-walker](https://togithub.com/i-walker) in [https://github.com/arrow-kt/arrow/pull/2731](https://togithub.com/arrow-kt/arrow/pull/2731) - revert arrow-gradle-config to 0.10.1 by [@​i-walker](https://togithub.com/i-walker) in [https://github.com/arrow-kt/arrow/pull/2738](https://togithub.com/arrow-kt/arrow/pull/2738) - Rename duplicated test by [@​wojda](https://togithub.com/wojda) in [https://github.com/arrow-kt/arrow/pull/2740](https://togithub.com/arrow-kt/arrow/pull/2740) - Fix some compilation and test warnings by [@​wojda](https://togithub.com/wojda) in [https://github.com/arrow-kt/arrow/pull/2741](https://togithub.com/arrow-kt/arrow/pull/2741) - Convert Arrow core effect into a non-inline function by [@​franciscodr](https://togithub.com/franciscodr) in [https://github.com/arrow-kt/arrow/pull/2734](https://togithub.com/arrow-kt/arrow/pull/2734) - add merge to validated by [@​agusotto96](https://togithub.com/agusotto96) in [https://github.com/arrow-kt/arrow/pull/2739](https://togithub.com/arrow-kt/arrow/pull/2739) - Fix compilation warnings by replacing usages of deprecated methods by [@​wojda](https://togithub.com/wojda) in [https://github.com/arrow-kt/arrow/pull/2742](https://togithub.com/arrow-kt/arrow/pull/2742) - Bump versions by [@​nomisRev](https://togithub.com/nomisRev) in [https://github.com/arrow-kt/arrow/pull/2745](https://togithub.com/arrow-kt/arrow/pull/2745) - Add `kotlin.mpp.enableCompatibilityMetadataVariant=true` by [@​JavierSegoviaCordoba](https://togithub.com/JavierSegoviaCordoba) in [https://github.com/arrow-kt/arrow/pull/2747](https://togithub.com/arrow-kt/arrow/pull/2747) - fix alpha tag build task by [@​i-walker](https://togithub.com/i-walker) in [https://github.com/arrow-kt/arrow/pull/2749](https://togithub.com/arrow-kt/arrow/pull/2749) - Fix build, inject kotlin.mpp.enableCompatibilityMetadataVariant in CI by [@​nomisRev](https://togithub.com/nomisRev) in [https://github.com/arrow-kt/arrow/pull/2751](https://togithub.com/arrow-kt/arrow/pull/2751) - add merge function for \*Effect by [@​i-walker](https://togithub.com/i-walker) in [https://github.com/arrow-kt/arrow/pull/2752](https://togithub.com/arrow-kt/arrow/pull/2752) - Small docs fix for widen function by [@​lenguyenthanh](https://togithub.com/lenguyenthanh) in [https://github.com/arrow-kt/arrow/pull/2754](https://togithub.com/arrow-kt/arrow/pull/2754) - max and min methods for NonEmptyList by [@​dorians](https://togithub.com/dorians) in [https://github.com/arrow-kt/arrow/pull/2622](https://togithub.com/arrow-kt/arrow/pull/2622) - Deprecate arrow test modules by [@​i-walker](https://togithub.com/i-walker) in [https://github.com/arrow-kt/arrow/pull/2753](https://togithub.com/arrow-kt/arrow/pull/2753) - Update kotlin-js-store/yarn.lock by [@​serras](https://togithub.com/serras) in [https://github.com/arrow-kt/arrow/pull/2756](https://togithub.com/arrow-kt/arrow/pull/2756) - Update all dependencies except the compiler version by [@​serras](https://togithub.com/serras) in [https://github.com/arrow-kt/arrow/pull/2757](https://togithub.com/arrow-kt/arrow/pull/2757) - Resource deprecate traverseResource, fixes arity-4 by [@​nomisRev](https://togithub.com/nomisRev) in [https://github.com/arrow-kt/arrow/pull/2750](https://togithub.com/arrow-kt/arrow/pull/2750) - Fix [#​2764](https://togithub.com/arrow-kt/arrow/issues/2764) & [#​2760](https://togithub.com/arrow-kt/arrow/issues/2760) by [@​nomisRev](https://togithub.com/nomisRev) in [https://github.com/arrow-kt/arrow/pull/2765](https://togithub.com/arrow-kt/arrow/pull/2765) - \[2761] Add explicit visibility modifier for all the generated optics by [@​aangairbender](https://togithub.com/aangairbender) in [https://github.com/arrow-kt/arrow/pull/2763](https://togithub.com/arrow-kt/arrow/pull/2763) - catch for EffectScope by [@​serras](https://togithub.com/serras) in [https://github.com/arrow-kt/arrow/pull/2746](https://togithub.com/arrow-kt/arrow/pull/2746) - Refine the Arrow version selector by [@​franciscodr](https://togithub.com/franciscodr) in [https://github.com/arrow-kt/arrow/pull/2770](https://togithub.com/arrow-kt/arrow/pull/2770) - update gradle wrapper by [@​i-walker](https://togithub.com/i-walker) in [https://github.com/arrow-kt/arrow/pull/2771](https://togithub.com/arrow-kt/arrow/pull/2771) - Consent management osano by [@​israelperezglez](https://togithub.com/israelperezglez) in [https://github.com/arrow-kt/arrow/pull/2755](https://togithub.com/arrow-kt/arrow/pull/2755) - Add ruby setup for publication task by [@​i-walker](https://togithub.com/i-walker) in [https://github.com/arrow-kt/arrow/pull/2774](https://togithub.com/arrow-kt/arrow/pull/2774) - fix ruby set up by [@​i-walker](https://togithub.com/i-walker) in [https://github.com/arrow-kt/arrow/pull/2775](https://togithub.com/arrow-kt/arrow/pull/2775) - Fix [#​2779](https://togithub.com/arrow-kt/arrow/issues/2779) by [@​nomisRev](https://togithub.com/nomisRev) in [https://github.com/arrow-kt/arrow/pull/2783](https://togithub.com/arrow-kt/arrow/pull/2783) - deprecate orNull Either extension function by [@​i-walker](https://togithub.com/i-walker) in [https://github.com/arrow-kt/arrow/pull/2773](https://togithub.com/arrow-kt/arrow/pull/2773) - Support generics and inner classes in `@optics` by [@​serras](https://togithub.com/serras) in [https://github.com/arrow-kt/arrow/pull/2776](https://togithub.com/arrow-kt/arrow/pull/2776) - Generalized copy for optics by [@​serras](https://togithub.com/serras) in [https://github.com/arrow-kt/arrow/pull/2777](https://togithub.com/arrow-kt/arrow/pull/2777) - Fix usage of startCoroutineUninterceptedOrReturn by [@​nomisRev](https://togithub.com/nomisRev) in [https://github.com/arrow-kt/arrow/pull/2789](https://togithub.com/arrow-kt/arrow/pull/2789) - Fix example in documentation by [@​obecker](https://togithub.com/obecker) in [https://github.com/arrow-kt/arrow/pull/2790](https://togithub.com/arrow-kt/arrow/pull/2790) - Backport flattening token/shift into Cont by [@​nomisRev](https://togithub.com/nomisRev) in [https://github.com/arrow-kt/arrow/pull/2791](https://togithub.com/arrow-kt/arrow/pull/2791) - Enable builder inference for optics `copy` by [@​serras](https://togithub.com/serras) in [https://github.com/arrow-kt/arrow/pull/2792](https://togithub.com/arrow-kt/arrow/pull/2792) - Update API compatibility validator version by [@​serras](https://togithub.com/serras) in [https://github.com/arrow-kt/arrow/pull/2794](https://togithub.com/arrow-kt/arrow/pull/2794) - \[BUGFIX] Result.zip by [@​nomisRev](https://togithub.com/nomisRev) in [https://github.com/arrow-kt/arrow/pull/2804](https://togithub.com/arrow-kt/arrow/pull/2804) - Update docs from version 1.0.1 to 1.1.2 by [@​Dobiasd](https://togithub.com/Dobiasd) in [https://github.com/arrow-kt/arrow/pull/2808](https://togithub.com/arrow-kt/arrow/pull/2808) - add separateEither and separateValidated test by [@​hoc081098](https://togithub.com/hoc081098) in [https://github.com/arrow-kt/arrow/pull/2814](https://togithub.com/arrow-kt/arrow/pull/2814) - Refactor - [#​2812](https://togithub.com/arrow-kt/arrow/issues/2812) iterable separate performance by [@​Khepu](https://togithub.com/Khepu) in [https://github.com/arrow-kt/arrow/pull/2815](https://togithub.com/arrow-kt/arrow/pull/2815) - Add Resource.allocated() to decompose Resource into it's allocate and… by [@​custommonkey](https://togithub.com/custommonkey) in [https://github.com/arrow-kt/arrow/pull/2820](https://togithub.com/arrow-kt/arrow/pull/2820) #### New Contributors - [@​tKe](https://togithub.com/tKe) made their first contribution in [https://github.com/arrow-kt/arrow/pull/2714](https://togithub.com/arrow-kt/arrow/pull/2714) - [@​b-schwab](https://togithub.com/b-schwab) made their first contribution in [https://github.com/arrow-kt/arrow/pull/2719](https://togithub.com/arrow-kt/arrow/pull/2719) - [@​wojda](https://togithub.com/wojda) made their first contribution in [https://github.com/arrow-kt/arrow/pull/2740](https://togithub.com/arrow-kt/arrow/pull/2740) - [@​agusotto96](https://togithub.com/agusotto96) made their first contribution in [https://github.com/arrow-kt/arrow/pull/2739](https://togithub.com/arrow-kt/arrow/pull/2739) - [@​dorians](https://togithub.com/dorians) made their first contribution in [https://github.com/arrow-kt/arrow/pull/2622](https://togithub.com/arrow-kt/arrow/pull/2622) - [@​aangairbender](https://togithub.com/aangairbender) made their first contribution in [https://github.com/arrow-kt/arrow/pull/2763](https://togithub.com/arrow-kt/arrow/pull/2763) - [@​obecker](https://togithub.com/obecker) made their first contribution in [https://github.com/arrow-kt/arrow/pull/2790](https://togithub.com/arrow-kt/arrow/pull/2790) - [@​Dobiasd](https://togithub.com/Dobiasd) made their first contribution in [https://github.com/arrow-kt/arrow/pull/2808](https://togithub.com/arrow-kt/arrow/pull/2808) - [@​hoc081098](https://togithub.com/hoc081098) made their first contribution in [https://github.com/arrow-kt/arrow/pull/2814](https://togithub.com/arrow-kt/arrow/pull/2814) - [@​Khepu](https://togithub.com/Khepu) made their first contribution in [https://github.com/arrow-kt/arrow/pull/2815](https://togithub.com/arrow-kt/arrow/pull/2815) - [@​custommonkey](https://togithub.com/custommonkey) made their first contribution in [https://github.com/arrow-kt/arrow/pull/2820](https://togithub.com/arrow-kt/arrow/pull/2820) **Full Changelog**: arrow-kt/arrow@1.1.2...1.1.3 ### [`v1.1.2`](https://togithub.com/arrow-kt/arrow/releases/tag/1.1.2) [Compare Source](https://togithub.com/arrow-kt/arrow/compare/1.1.0...1.1.2) #### What's Changed - Update all dependencies to v1.6.21-1.0.5 ([#​2708](https://togithub.com/arrow-kt/arrow/issues/2708)) by [@​renovate-bot](https://togithub.com/renovate-bot) **Full Changelog**: arrow-kt/arrow@1.1.0...1.1.2 ### [`v1.1.0`](https://togithub.com/arrow-kt/arrow/releases/tag/1.1.0) [Compare Source](https://togithub.com/arrow-kt/arrow/compare/1.0.1...1.1.0) #### What's Changed - Define Dsl as public ([#​2706](https://togithub.com/arrow-kt/arrow/issues/2706)) by [@​i-walker](https://togithub.com/i-walker) - Update all dependencies ([#​2705](https://togithub.com/arrow-kt/arrow/issues/2705)) by [@​renovate-bot](https://togithub.com/renovate-bot) - Update link to Arrow Analysis documentation ([#​2701](https://togithub.com/arrow-kt/arrow/issues/2701)) by [@​franciscodr](https://togithub.com/franciscodr) - Update all dependencies ([#​2703](https://togithub.com/arrow-kt/arrow/issues/2703)) by [@​renovate-bot](https://togithub.com/renovate-bot) - Update plugin dokka to v1.6.20 ([#​2702](https://togithub.com/arrow-kt/arrow/issues/2702)) by [@​renovate-bot](https://togithub.com/renovate-bot) - Update stefanzweifel/git-auto-commit-action action to v4.14.1 ([#​2700](https://togithub.com/arrow-kt/arrow/issues/2700)) by [@​renovate-bot](https://togithub.com/renovate-bot) - Update all dependencies ([#​2699](https://togithub.com/arrow-kt/arrow/issues/2699)) by [@​renovate-bot](https://togithub.com/renovate-bot) - Update all dependencies ([#​2696](https://togithub.com/arrow-kt/arrow/issues/2696)) by [@​renovate-bot](https://togithub.com/renovate-bot) - Update ([#​2698](https://togithub.com/arrow-kt/arrow/issues/2698)) by [@​i-walker](https://togithub.com/i-walker) - Update libs.versions.toml ([#​2697](https://togithub.com/arrow-kt/arrow/issues/2697)) by [@​i-walker](https://togithub.com/i-walker) - Fix Either#isNotEmpty()'s KDoc sample ([#​2694](https://togithub.com/arrow-kt/arrow/issues/2694)) by [@​ChristianGarcia](https://togithub.com/ChristianGarcia) - Update gradle/gradle-build-action action to v2.1.5 ([#​2695](https://togithub.com/arrow-kt/arrow/issues/2695)) by [@​renovate-bot](https://togithub.com/renovate-bot) - Update all dependencies ([#​2665](https://togithub.com/arrow-kt/arrow/issues/2665)) by [@​renovate-bot](https://togithub.com/renovate-bot) - Rename traverseX and sequenceX for Iterable ([#​2692](https://togithub.com/arrow-kt/arrow/issues/2692)) by [@​i-walker](https://togithub.com/i-walker) - Rename Sequence sequenceX, traverseX and deprecate Sequence.some ([#​2686](https://togithub.com/arrow-kt/arrow/issues/2686)) by [@​i-walker](https://togithub.com/i-walker) - Deprecate combineAll in favour of fold ([#​2687](https://togithub.com/arrow-kt/arrow/issues/2687)) by [@​i-walker](https://togithub.com/i-walker) - rm snapshot and update Kotlin label ([#​2690](https://togithub.com/arrow-kt/arrow/issues/2690)) by [@​i-walker](https://togithub.com/i-walker) - Resource tap deprecation ([#​2684](https://togithub.com/arrow-kt/arrow/issues/2684)) by [@​i-walker](https://togithub.com/i-walker) - Update Set up Documentation ([#​2685](https://togithub.com/arrow-kt/arrow/issues/2685)) by [@​i-walker](https://togithub.com/i-walker) - Fix TOC ([#​2688](https://togithub.com/arrow-kt/arrow/issues/2688)) by [@​i-walker](https://togithub.com/i-walker) - Generate optics based on targets or all ([#​2683](https://togithub.com/arrow-kt/arrow/issues/2683)) by [@​i-walker](https://togithub.com/i-walker) - Schedule.repeatAsFlow ([#​2676](https://togithub.com/arrow-kt/arrow/issues/2676)) by [@​i-walker](https://togithub.com/i-walker) - File name generation fix ([#​2681](https://togithub.com/arrow-kt/arrow/issues/2681)) by [@​i-walker](https://togithub.com/i-walker) - Update all dependencies (major) ([#​2673](https://togithub.com/arrow-kt/arrow/issues/2673)) by [@​renovate-bot](https://togithub.com/renovate-bot) - fix imports for ksp plugin ([#​2678](https://togithub.com/arrow-kt/arrow/issues/2678)) by [@​i-walker](https://togithub.com/i-walker) - add Nullable proposal ([#​2675](https://togithub.com/arrow-kt/arrow/issues/2675)) by [@​i-walker](https://togithub.com/i-walker) - Resource.asFlow ([#​2677](https://togithub.com/arrow-kt/arrow/issues/2677)) by [@​i-walker](https://togithub.com/i-walker) - remove design doc of Effect ([#​2674](https://togithub.com/arrow-kt/arrow/issues/2674)) by [@​i-walker](https://togithub.com/i-walker) - Fix typos reorg resource computation block ([#​2671](https://togithub.com/arrow-kt/arrow/issues/2671)) by [@​i-walker](https://togithub.com/i-walker) - deprecate signatures in computations and add Result for continuations ([#​2669](https://togithub.com/arrow-kt/arrow/issues/2669)) by [@​i-walker](https://togithub.com/i-walker) - Fix bug in the transaction example ([#​2667](https://togithub.com/arrow-kt/arrow/issues/2667)) by [@​SaberCon](https://togithub.com/SaberCon) - deprecate arrow.continuation ([#​2672](https://togithub.com/arrow-kt/arrow/issues/2672)) by [@​i-walker](https://togithub.com/i-walker) - fix sitemap titles ([#​2670](https://togithub.com/arrow-kt/arrow/issues/2670)) by [@​i-walker](https://togithub.com/i-walker) - Transfer Cont from [@​nomisrev](https://togithub.com/nomisrev) to arrow ([#​2661](https://togithub.com/arrow-kt/arrow/issues/2661)) by [@​i-walker](https://togithub.com/i-walker) - Non throwing Retrofit Either adapter ([#​2621](https://togithub.com/arrow-kt/arrow/issues/2621)) by [@​lukaszkalnik](https://togithub.com/lukaszkalnik) - Retrofit adapter: allow null response body for methods returning Unit ([#​2625](https://togithub.com/arrow-kt/arrow/issues/2625)) by [@​lukaszkalnik](https://togithub.com/lukaszkalnik) - Fix broken build main Optics Reflect ([#​2666](https://togithub.com/arrow-kt/arrow/issues/2666)) by [@​nomisRev](https://togithub.com/nomisRev) - Update documentation links in README ([#​2664](https://togithub.com/arrow-kt/arrow/issues/2664)) by [@​fo2rist](https://togithub.com/fo2rist) - Optics based on kotlin.reflect ([#​2612](https://togithub.com/arrow-kt/arrow/issues/2612)) by [@​serras](https://togithub.com/serras) - \[Optics] Optional getter ([#​2611](https://togithub.com/arrow-kt/arrow/issues/2611)) by [@​serras](https://togithub.com/serras) - Update all dependencies ([#​2663](https://togithub.com/arrow-kt/arrow/issues/2663)) by [@​renovate-bot](https://togithub.com/renovate-bot) - Fix link to /patterns/error_handling/ ([#​2627](https://togithub.com/arrow-kt/arrow/issues/2627)) by [@​IlyaPomaskin](https://togithub.com/IlyaPomaskin) - Update all dependencies ([#​2659](https://togithub.com/arrow-kt/arrow/issues/2659)) by [@​renovate-bot](https://togithub.com/renovate-bot) - Update gradle/gradle-build-action action to v2.1.1 ([#​2653](https://togithub.com/arrow-kt/arrow/issues/2653)) by [@​renovate-bot](https://togithub.com/renovate-bot) - \[Optics KSP] Update docs to talk about IDEs ([#​2655](https://togithub.com/arrow-kt/arrow/issues/2655)) by [@​serras](https://togithub.com/serras) - Use first, .. instead of a,.. ([#​2654](https://togithub.com/arrow-kt/arrow/issues/2654)) by [@​nomisRev](https://togithub.com/nomisRev) - Update README.md ([#​2631](https://togithub.com/arrow-kt/arrow/issues/2631)) by [@​i-walker](https://togithub.com/i-walker) - CU-23dm3ye support maven publication ([#​2652](https://togithub.com/arrow-kt/arrow/issues/2652)) by [@​i-walker](https://togithub.com/i-walker) - Update arrow gradle version ([#​2651](https://togithub.com/arrow-kt/arrow/issues/2651)) by [@​i-walker](https://togithub.com/i-walker) - Move Arrow Optics KSP to main/test hierarchy ([#​2649](https://togithub.com/arrow-kt/arrow/issues/2649)) by [@​serras](https://togithub.com/serras) - Update libs.versions.toml ([#​2648](https://togithub.com/arrow-kt/arrow/issues/2648)) by [@​i-walker](https://togithub.com/i-walker) - Link Analysis from home page ([#​2595](https://togithub.com/arrow-kt/arrow/issues/2595)) by [@​serras](https://togithub.com/serras) - Clean up README after gradle upgrade ([#​2642](https://togithub.com/arrow-kt/arrow/issues/2642)) by [@​felixdivo](https://togithub.com/felixdivo) - Update plugin kotest-multiplatform to v5.1.0 ([#​2645](https://togithub.com/arrow-kt/arrow/issues/2645)) by [@​renovate-bot](https://togithub.com/renovate-bot) - Update libs.versions.toml ([#​2644](https://togithub.com/arrow-kt/arrow/issues/2644)) by [@​i-walker](https://togithub.com/i-walker) - Update all dependencies to v5.1.0 ([#​2643](https://togithub.com/arrow-kt/arrow/issues/2643)) by [@​renovate-bot](https://togithub.com/renovate-bot) - revert ksp plugin to jvm only ([#​2640](https://togithub.com/arrow-kt/arrow/issues/2640)) by [@​i-walker](https://togithub.com/i-walker) - update arrow gradle ([#​2639](https://togithub.com/arrow-kt/arrow/issues/2639)) by [@​i-walker](https://togithub.com/i-walker) - Update all dependencies ([#​2638](https://togithub.com/arrow-kt/arrow/issues/2638)) by [@​renovate-bot](https://togithub.com/renovate-bot) - fix typo comment of circuitbreaker ([#​2637](https://togithub.com/arrow-kt/arrow/issues/2637)) by larryjung - Fixes a few typos on the Fx docs ([#​2620](https://togithub.com/arrow-kt/arrow/issues/2620)) by [@​legzo](https://togithub.com/legzo) - Update contributing guide with Knit ([#​2634](https://togithub.com/arrow-kt/arrow/issues/2634)) by [@​lukaszkalnik](https://togithub.com/lukaszkalnik) - \[Optics] Show error for generic classes in KSP plug-in ([#​2636](https://togithub.com/arrow-kt/arrow/issues/2636)) by [@​serras](https://togithub.com/serras) - Pass Arrow version to publish_doc job ([#​2633](https://togithub.com/arrow-kt/arrow/issues/2633)) by [@​franciscodr](https://togithub.com/franciscodr) - Fix 404 error in the Core library documentation ([#​2623](https://togithub.com/arrow-kt/arrow/issues/2623)) by [@​devmarkpro](https://togithub.com/devmarkpro) - Fix Retrofit adapter test configuration ([#​2624](https://togithub.com/arrow-kt/arrow/issues/2624)) by [@​lukaszkalnik](https://togithub.com/lukaszkalnik) - Update all dependencies ([#​2628](https://togithub.com/arrow-kt/arrow/issues/2628)) by [@​renovate-bot](https://togithub.com/renovate-bot) - run on windows only windows test ([#​2630](https://togithub.com/arrow-kt/arrow/issues/2630)) by [@​i-walker](https://togithub.com/i-walker) - Update CONTRIBUTING.md with the new build guide ([#​2600](https://togithub.com/arrow-kt/arrow/issues/2600)) by [@​lukaszkalnik](https://togithub.com/lukaszkalnik) - Bump Arrow Gradle Config to 0.6.1-rc.4 by [@​nomisRev](https://togithub.com/nomisRev) - \[Github Action] Run build on all platforms ([#​2626](https://togithub.com/arrow-kt/arrow/issues/2626)) by [@​nomisRev](https://togithub.com/nomisRev) - Disable Gradle scan, and Gradle daemon by [@​nomisRev](https://togithub.com/nomisRev) - Update all dependencies ([#​2617](https://togithub.com/arrow-kt/arrow/issues/2617)) by [@​renovate-bot](https://togithub.com/renovate-bot) - Disable ksp, and ksp test in Arrow Optics by [@​nomisRev](https://togithub.com/nomisRev) - Use gradle action everywhere, revery permSize, and add --full-stacktrace everywhere by [@​nomisRev](https://togithub.com/nomisRev) - Make KSP plugin a JVM module by [@​nomisRev](https://togithub.com/nomisRev) - Use gradle action, and add --full-stacktrace by [@​nomisRev](https://togithub.com/nomisRev) - Bump to arrow gradle config rc3 by [@​nomisRev](https://togithub.com/nomisRev) - Revert back to ./gradlew by [@​nomisRev](https://togithub.com/nomisRev) - Fix publish file by [@​nomisRev](https://togithub.com/nomisRev) - Use gradle action for publish, and increase timeout time by [@​nomisRev](https://togithub.com/nomisRev) - Setup Java publish.yml by [@​nomisRev](https://togithub.com/nomisRev) - Update publish workflow by [@​nomisRev](https://togithub.com/nomisRev) - Run ./gradlew before get-arrow-version by [@​nomisRev](https://togithub.com/nomisRev) - Update publish.yml by [@​nomisRev](https://togithub.com/nomisRev) - Add lib_version ([#​2616](https://togithub.com/arrow-kt/arrow/issues/2616)) by [@​nomisRev](https://togithub.com/nomisRev) - Bump Gradle Config to 0.6.1-RC.1 ([#​2615](https://togithub.com/arrow-kt/arrow/issues/2615)) by [@​nomisRev](https://togithub.com/nomisRev) - Update all dependencies ([#​2566](https://togithub.com/arrow-kt/arrow/issues/2566)) by [@​renovate-bot](https://togithub.com/renovate-bot) - Disable parallel gradle ([#​2614](https://togithub.com/arrow-kt/arrow/issues/2614)) by [@​nomisRev](https://togithub.com/nomisRev) - Fix Gradle an existing connection was forcibly closed by the remote host ([#​2610](https://togithub.com/arrow-kt/arrow/issues/2610)) by [@​nomisRev](https://togithub.com/nomisRev) - Update publish gradle opts, and remove gradle cache from tag workflows by [@​nomisRev](https://togithub.com/nomisRev) - Remove gradle cache from publish workflow by [@​nomisRev](https://togithub.com/nomisRev) - Fix Windows env settings in publish workflow ([#​2609](https://togithub.com/arrow-kt/arrow/issues/2609)) by [@​raulraja](https://togithub.com/raulraja) - Fix `publish` and `pull_request` workflows ([#​2608](https://togithub.com/arrow-kt/arrow/issues/2608)) by [@​JavierSegoviaCordoba](https://togithub.com/JavierSegoviaCordoba) - Change Java memory settings by [@​JavierSegoviaCordoba](https://togithub.com/JavierSegoviaCordoba) - Add Java and Gradle settings for both generate tag workflows by [@​JavierSegoviaCordoba](https://togithub.com/JavierSegoviaCordoba) - Add `generate-alpha-tag` by [@​JavierSegoviaCordoba](https://togithub.com/JavierSegoviaCordoba) - Change `tags` regex by [@​JavierSegoviaCordoba](https://togithub.com/JavierSegoviaCordoba) - Merge remote-tracking branch 'origin/main' into rr-js-add-versioning-plugin by [@​JavierSegoviaCordoba](https://togithub.com/JavierSegoviaCordoba) - Re-organize Optics docs ([#​2583](https://togithub.com/arrow-kt/arrow/issues/2583)) by [@​serras](https://togithub.com/serras) - Fixing documentation workflow ([#​2594](https://togithub.com/arrow-kt/arrow/issues/2594)) by [@​franciscodr](https://togithub.com/franciscodr) - Upgrade to kotlinx-coroutines 1.6.0 ([#​2606](https://togithub.com/arrow-kt/arrow/issues/2606)) by [@​serras](https://togithub.com/serras) - Job to update the API files ([#​2605](https://togithub.com/arrow-kt/arrow/issues/2605)) by [@​serras](https://togithub.com/serras) - Rename arrow-optics-ksp to arrow-optics-ksp-plugin ([#​2604](https://togithub.com/arrow-kt/arrow/issues/2604)) by [@​serras](https://togithub.com/serras) - Remove legacy Meta, bring Optics KSP ([#​2599](https://togithub.com/arrow-kt/arrow/issues/2599)) by [@​nomisRev](https://togithub.com/nomisRev) - docs(Either): describe the `all` method ([#​2551](https://togithub.com/arrow-kt/arrow/issues/2551)) by [@​codymikol](https://togithub.com/codymikol) - Make sure listHead set works properly ([#​2589](https://togithub.com/arrow-kt/arrow/issues/2589)) by [@​lenguyenthanh](https://togithub.com/lenguyenthanh) - Code block style ([#​2596](https://togithub.com/arrow-kt/arrow/issues/2596)) by [@​israelperezglez](https://togithub.com/israelperezglez) - Add `JAVA_OPTS` and `GRADLE_OPTS` to `publish` and `pull_request` by [@​JavierSegoviaCordoba](https://togithub.com/JavierSegoviaCordoba) - Refactor `publish` and `pull-request` workflows by [@​JavierSegoviaCordoba](https://togithub.com/JavierSegoviaCordoba) - Fix tag regex in `publish` workflow by [@​JavierSegoviaCordoba](https://togithub.com/JavierSegoviaCordoba) - Refactor `publish.yml` workflow and add `generate-tag` workflow by [@​JavierSegoviaCordoba](https://togithub.com/JavierSegoviaCordoba) - Refactor `publish.yml` workflow by [@​JavierSegoviaCordoba](https://togithub.com/JavierSegoviaCordoba) - Add `vcs.xml` by [@​JavierSegoviaCordoba](https://togithub.com/JavierSegoviaCordoba) - versioning plugin by [@​raulraja](https://togithub.com/raulraja) - Remove base directory for gradle.properties file ([#​2585](https://togithub.com/arrow-kt/arrow/issues/2585)) by [@​franciscodr](https://togithub.com/franciscodr) - Simplify Gradle layout, + KNIT, - ANK and fix site code fences ([#​2584](https://togithub.com/arrow-kt/arrow/issues/2584)) by [@​raulraja](https://togithub.com/raulraja) - Fix bug cancellation parMap ([#​2579](https://togithub.com/arrow-kt/arrow/issues/2579)) by [@​nomisRev](https://togithub.com/nomisRev) - Resource computation block ([#​2571](https://togithub.com/arrow-kt/arrow/issues/2571)) by [@​nomisRev](https://togithub.com/nomisRev) - make Semigroup a fun interface ([#​2569](https://togithub.com/arrow-kt/arrow/issues/2569)) by [@​brezinajn](https://togithub.com/brezinajn) - Update all dependencies (major) ([#​2567](https://togithub.com/arrow-kt/arrow/issues/2567)) by [@​renovate-bot](https://togithub.com/renovate-bot) - Configure Renovate ([#​2533](https://togithub.com/arrow-kt/arrow/issues/2533)) by [@​renovate-bot](https://togithub.com/renovate-bot) #### New Contributors - [@​brezinajn](https://togithub.com/brezinajn) made their first contribution in [https://github.com/arrow-kt/arrow/pull/2569](https://togithub.com/arrow-kt/arrow/pull/2569) - [@​devmarkpro](https://togithub.com/devmarkpro) made their first contribution in [https://github.com/arrow-kt/arrow/pull/2623](https://togithub.com/arrow-kt/arrow/pull/2623) - [@​IlyaPomaskin](https://togithub.com/IlyaPomaskin) made their first contribution in [https://github.com/arrow-kt/arrow/pull/2627](https://togithub.com/arrow-kt/arrow/pull/2627) - [@​felixdivo](https://togithub.com/felixdivo) made their first contribution in [https://github.com/arrow-kt/arrow/pull/2642](https://togithub.com/arrow-kt/arrow/pull/2642) - [@​fo2rist](https://togithub.com/fo2rist) made their first contribution in [https://github.com/arrow-kt/arrow/pull/2664](https://togithub.com/arrow-kt/arrow/pull/2664) - [@​SaberCon](https://togithub.com/SaberCon) made their first contribution in [https://github.com/arrow-kt/arrow/pull/2667](https://togithub.com/arrow-kt/arrow/pull/2667) - [@​ChristianGarcia](https://togithub.com/ChristianGarcia) made their first contribution in [https://github.com/arrow-kt/arrow/pull/2694](https://togithub.com/arrow-kt/arrow/pull/2694) **Full Changelog**: arrow-kt/arrow@1.0.1...1.1.0 </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://app.renovatebot.com/dashboard#github/elide-dev/v3). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4xMDIuMCIsInVwZGF0ZWRJblZlciI6IjM0LjEwMi4wIn0=-->
This PR adds a small utility method for "simulating"
catch
as we have for exceptions. If this is useful, a bunch of other utility methods can be implemented on top of it, but first I wanted to know whether you like thiscatch
.