-
Notifications
You must be signed in to change notification settings - Fork 455
Raise
with context parameters
#3606
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
Conversation
Thanks for pinging me on this! I'll have a look really soon! I had some ideas in a repo called arrow-context, but that's out-of-date now since it was using context receivers |
Kover Report
|
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 a great first step towards supporting context-parameters.
Is it worth taking the same approach with another module for fx
contextual?
Worth adding in some bridges for some of the RaiseAccumulate
methods? It's not currently possible to use:
context(_: RaiseAccumulate<String>)
private fun example() {
val a by accumulating { }
}
(although this would require making the getValue
operator available outside of RaiseAccumulate
)
...-libs/core/arrow-raise-contextual/src/commonMain/kotlin/arrow/core/raise/contextual/Raise.kt
Outdated
Show resolved
Hide resolved
...-libs/core/arrow-raise-contextual/src/commonMain/kotlin/arrow/core/raise/contextual/Raise.kt
Outdated
Show resolved
Hide resolved
.../arrow-raise-contextual/src/commonMain/kotlin/arrow/core/raise/contextual/RaiseAccumulate.kt
Outdated
Show resolved
Hide resolved
Okay... I need to refactor my project 😂 |
It seems that context parameters will not force pre-release binaries. |
119a9d8
to
2cf166f
Compare
Since context parameters will not poison the binary, maybe we should just include these functions in |
Yes, sounds good to me! |
Could it be that in your contextual bridge function you did not put all of the contract definition as done by the Raise member functions? I.e.: |
Closed in favor of #3646 |
The time has finally come to provide
Raise
with context parameters! Note that if we publish this library, users still need to use-Xskip-prerelease-check
in their build file.This PR is the start of the conversation of which functions we should expose using context-parameters-style. In this case I've decided to go with the following idea: minimize the amount of additional functions, while allowing people to freely define their functions as:
More concretely, this implies:
either
,option
, etcetera) with contextual functions. The current functions work still OK with contextual parameters, since the receiver is part of context parameter resolution,bindAll
andmapOrAccumulate
with the iterable/sequence/map being a receiver.