diff --git a/arrow-libs/core/arrow-core/api/android/arrow-core.api b/arrow-libs/core/arrow-core/api/android/arrow-core.api index de83b2227a1..aed666c09da 100644 --- a/arrow-libs/core/arrow-core/api/android/arrow-core.api +++ b/arrow-libs/core/arrow-core/api/android/arrow-core.api @@ -979,7 +979,7 @@ public class arrow/core/raise/RaiseAccumulate : arrow/core/raise/Raise { public final fun ensureNotNullOrAccumulate (Ljava/lang/Object;Lkotlin/jvm/functions/Function0;)Larrow/core/raise/RaiseAccumulate$Value; public final fun ensureOrAccumulate (ZLkotlin/jvm/functions/Function0;)V public final fun getRaise ()Larrow/core/raise/Raise; - public final fun getValue (Larrow/core/raise/RaiseAccumulate$Value;Ljava/lang/Void;Lkotlin/reflect/KProperty;)Ljava/lang/Object; + public final synthetic fun getValue (Larrow/core/raise/RaiseAccumulate$Value;Ljava/lang/Void;Lkotlin/reflect/KProperty;)Ljava/lang/Object; public final fun hasErrors ()Z public fun invoke (Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; public fun invoke (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; @@ -995,6 +995,7 @@ public class arrow/core/raise/RaiseAccumulate : arrow/core/raise/Raise { public final class arrow/core/raise/RaiseAccumulate$Error : arrow/core/raise/RaiseAccumulate$Value { public fun (Larrow/core/raise/RaiseAccumulate;)V + public final fun getRaise ()Larrow/core/raise/RaiseAccumulate; public synthetic fun getValue ()Ljava/lang/Object; public fun getValue ()Ljava/lang/Void; } @@ -1004,8 +1005,9 @@ public final class arrow/core/raise/RaiseAccumulate$Ok : arrow/core/raise/RaiseA public fun getValue ()Ljava/lang/Object; } -public abstract interface class arrow/core/raise/RaiseAccumulate$Value { +public abstract class arrow/core/raise/RaiseAccumulate$Value { public abstract fun getValue ()Ljava/lang/Object; + public final fun getValue (Ljava/lang/Void;Lkotlin/reflect/KProperty;)Ljava/lang/Object; } public abstract class arrow/core/raise/RaiseCancellationException : java/util/concurrent/CancellationException { @@ -1173,3 +1175,56 @@ public final class arrow/core/raise/Trace { public final synthetic fun unbox-impl ()Ljava/util/concurrent/CancellationException; } +public final class arrow/core/raise/context/RaiseContextualKt { + public static final fun accumulate (Larrow/core/raise/Raise;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; + public static final fun accumulating (Larrow/core/raise/RaiseAccumulate;Lkotlin/jvm/functions/Function1;)Larrow/core/raise/RaiseAccumulate$Value; + public static final fun bind (Larrow/core/raise/Raise;Larrow/core/Either;)Ljava/lang/Object; + public static final fun bind (Larrow/core/raise/Raise;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static final fun bind (Larrow/core/raise/ResultRaise;Ljava/lang/Object;)Ljava/lang/Object; + public static final fun bind (Larrow/core/raise/SingletonRaise;Larrow/core/Option;)Ljava/lang/Object; + public static final fun bind (Larrow/core/raise/SingletonRaise;Ljava/lang/Object;)Ljava/lang/Object; + public static final fun bindAllEither (Larrow/core/raise/Raise;Ljava/lang/Iterable;)Ljava/util/List; + public static final fun bindAllEither (Larrow/core/raise/Raise;Ljava/util/List;)Ljava/util/List; + public static final fun bindAllEither (Larrow/core/raise/Raise;Ljava/util/Map;)Ljava/util/Map; + public static final fun bindAllEither (Larrow/core/raise/Raise;Ljava/util/Set;)Ljava/util/Set; + public static final fun bindAllNullable (Larrow/core/raise/SingletonRaise;Ljava/lang/Iterable;)Ljava/util/List; + public static final fun bindAllNullable (Larrow/core/raise/SingletonRaise;Ljava/util/List;)Ljava/util/List; + public static final fun bindAllNullable (Larrow/core/raise/SingletonRaise;Ljava/util/Map;)Ljava/util/Map; + public static final fun bindAllNullable (Larrow/core/raise/SingletonRaise;Ljava/util/Set;)Ljava/util/Set; + public static final fun bindAllOption (Larrow/core/raise/SingletonRaise;Ljava/lang/Iterable;)Ljava/util/List; + public static final fun bindAllOption (Larrow/core/raise/SingletonRaise;Ljava/util/List;)Ljava/util/List; + public static final fun bindAllOption (Larrow/core/raise/SingletonRaise;Ljava/util/Map;)Ljava/util/Map; + public static final fun bindAllOption (Larrow/core/raise/SingletonRaise;Ljava/util/Set;)Ljava/util/Set; + public static final fun bindAllOrAccumulate (Larrow/core/raise/RaiseAccumulate;Ljava/lang/Iterable;)Larrow/core/raise/RaiseAccumulate$Value; + public static final fun bindAllResult (Larrow/core/raise/ResultRaise;Ljava/lang/Iterable;)Ljava/util/List; + public static final fun bindAllResult (Larrow/core/raise/ResultRaise;Ljava/util/List;)Ljava/util/List; + public static final fun bindAllResult (Larrow/core/raise/ResultRaise;Ljava/util/Map;)Ljava/util/Map; + public static final fun bindAllResult (Larrow/core/raise/ResultRaise;Ljava/util/Set;)Ljava/util/Set; + public static final fun bindNel (Larrow/core/raise/RaiseAccumulate;Larrow/core/Either;)Ljava/lang/Object; + public static final fun bindNelOrAccumulate (Larrow/core/raise/RaiseAccumulate;Larrow/core/Either;)Larrow/core/raise/RaiseAccumulate$Value; + public static final fun bindOrAccumulate (Larrow/core/raise/RaiseAccumulate;Larrow/core/Either;)Larrow/core/raise/RaiseAccumulate$Value; + public static final fun either (Lkotlin/jvm/functions/Function1;)Larrow/core/Either; + public static final fun ensure (Larrow/core/raise/Raise;ZLkotlin/jvm/functions/Function0;)V + public static final fun ensureNotNull (Larrow/core/raise/Raise;Ljava/lang/Object;Lkotlin/jvm/functions/Function0;)Ljava/lang/Object; + public static final fun ensureNotNullOrAccumulate (Larrow/core/raise/RaiseAccumulate;Ljava/lang/Object;Lkotlin/jvm/functions/Function0;)Larrow/core/raise/RaiseAccumulate$Value; + public static final fun ensureOrAccumulate (Larrow/core/raise/RaiseAccumulate;ZLkotlin/jvm/functions/Function0;)V + public static final fun impure (Lkotlin/jvm/functions/Function1;)V + public static final fun ior (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;)Larrow/core/Ior; + public static final fun iorNel (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;)Larrow/core/Ior; + public static synthetic fun iorNel$default (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Larrow/core/Ior; + public static final fun mapOrAccumulate (Larrow/core/raise/Raise;Ljava/lang/Iterable;Lkotlin/jvm/functions/Function2;)Ljava/util/List; + public static final fun mapOrAccumulate (Larrow/core/raise/Raise;Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function2;)Ljava/util/List; + public static final fun mapOrAccumulate-l8IBlHg (Larrow/core/raise/Raise;Ljava/util/List;Lkotlin/jvm/functions/Function2;)Ljava/util/List; + public static final fun mapValuesOrAccumulate (Larrow/core/raise/Raise;Ljava/util/Map;Lkotlin/jvm/functions/Function2;)Ljava/util/Map; + public static final fun nullable (Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; + public static final fun option (Lkotlin/jvm/functions/Function1;)Larrow/core/Option; + public static final fun raise (Larrow/core/raise/Raise;Ljava/lang/Object;)Ljava/lang/Void; + public static final fun result (Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; + public static final fun singleton (Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; + public static final fun withError (Larrow/core/raise/Raise;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; + public static final fun withNel (Larrow/core/raise/RaiseAccumulate;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; + public static final fun zipOrAccumulate (Larrow/core/raise/Raise;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function4;)Ljava/lang/Object; + public static final fun zipOrAccumulate (Larrow/core/raise/Raise;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;)Ljava/lang/Object; + public static final fun zipOrAccumulate (Larrow/core/raise/Raise;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +} + diff --git a/arrow-libs/core/arrow-core/api/arrow-core.klib.api b/arrow-libs/core/arrow-core/api/arrow-core.klib.api index 17d56f79a23..db4e0ca4023 100644 --- a/arrow-libs/core/arrow-core/api/arrow-core.klib.api +++ b/arrow-libs/core/arrow-core/api/arrow-core.klib.api @@ -492,11 +492,6 @@ open class <#A: kotlin/Any?> arrow.core.raise/RaiseAccumulate : arrow.core.raise open fun <#A1: kotlin/Any?> (kotlin.collections/Iterable>).bindAll(): kotlin.collections/List<#A1> // arrow.core.raise/RaiseAccumulate.bindAll|bindAll@kotlin.collections.Iterable>(){0§}[0] open fun raise(#A): kotlin/Nothing // arrow.core.raise/RaiseAccumulate.raise|raise(1:0){}[0] - sealed interface <#A1: out kotlin/Any?> Value { // arrow.core.raise/RaiseAccumulate.Value|null[0] - abstract val value // arrow.core.raise/RaiseAccumulate.Value.value|{}value[0] - abstract fun (): #A1 // arrow.core.raise/RaiseAccumulate.Value.value.|(){}[0] - } - final class <#A1: out kotlin/Any?> Ok : arrow.core.raise/RaiseAccumulate.Value<#A1> { // arrow.core.raise/RaiseAccumulate.Ok|null[0] constructor (#A1) // arrow.core.raise/RaiseAccumulate.Ok.|(1:0){}[0] @@ -504,12 +499,21 @@ open class <#A: kotlin/Any?> arrow.core.raise/RaiseAccumulate : arrow.core.raise final fun (): #A1 // arrow.core.raise/RaiseAccumulate.Ok.value.|(){}[0] } - final inner class Error : arrow.core.raise/RaiseAccumulate.Value { // arrow.core.raise/RaiseAccumulate.Error|null[0] - constructor () // arrow.core.raise/RaiseAccumulate.Error.|(){}[0] + final class Error : arrow.core.raise/RaiseAccumulate.Value { // arrow.core.raise/RaiseAccumulate.Error|null[0] + constructor (arrow.core.raise/RaiseAccumulate<*>) // arrow.core.raise/RaiseAccumulate.Error.|(arrow.core.raise.RaiseAccumulate<*>){}[0] + final val raise // arrow.core.raise/RaiseAccumulate.Error.raise|{}raise[0] + final fun (): arrow.core.raise/RaiseAccumulate<*> // arrow.core.raise/RaiseAccumulate.Error.raise.|(){}[0] final val value // arrow.core.raise/RaiseAccumulate.Error.value|{}value[0] final fun (): kotlin/Nothing // arrow.core.raise/RaiseAccumulate.Error.value.|(){}[0] } + + sealed class <#A1: out kotlin/Any?> Value { // arrow.core.raise/RaiseAccumulate.Value|null[0] + abstract val value // arrow.core.raise/RaiseAccumulate.Value.value|{}value[0] + abstract fun (): #A1 // arrow.core.raise/RaiseAccumulate.Value.value.|(){}[0] + + final inline fun getValue(kotlin/Nothing?, kotlin.reflect/KProperty<*>): #A1 // arrow.core.raise/RaiseAccumulate.Value.getValue|getValue(kotlin.Nothing?;kotlin.reflect.KProperty<*>){}[0] + } } sealed class <#A: out kotlin/Any?, #B: out kotlin/Any?> arrow.core/Either { // arrow.core/Either|null[0] @@ -733,6 +737,9 @@ final fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/Any?> ( final fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/Any?> (kotlin.collections/Map<#A, #B>).arrow.core/padZip(kotlin.collections/Map<#A, #C>, kotlin/Function3<#A, #B?, #C?, #D>): kotlin.collections/Map<#A, #D> // arrow.core/padZip|padZip@kotlin.collections.Map<0:0,0:1>(kotlin.collections.Map<0:0,0:2>;kotlin.Function3<0:0,0:1?,0:2?,0:3>){0§;1§;2§;3§}[0] final fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/Any?> (kotlin.sequences/Sequence<#A>).arrow.core/zip(kotlin.sequences/Sequence<#B>, kotlin.sequences/Sequence<#C>, kotlin/Function3<#A, #B, #C, #D>): kotlin.sequences/Sequence<#D> // arrow.core/zip|zip@kotlin.sequences.Sequence<0:0>(kotlin.sequences.Sequence<0:1>;kotlin.sequences.Sequence<0:2>;kotlin.Function3<0:0,0:1,0:2,0:3>){0§;1§;2§;3§}[0] final fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/Any?> (kotlin/Triple<#A, #B, #C>).arrow.core/plus(#D): arrow.core/Tuple4<#A, #B, #C, #D> // arrow.core/plus|plus@kotlin.Triple<0:0,0:1,0:2>(0:3){0§;1§;2§;3§}[0] +final fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?> (context(arrow.core.raise/Raise<#A>), kotlin.collections/Map<#B, arrow.core/Either<#A, #C>>).arrow.core.raise.context/bindAll(): kotlin.collections/Map<#B, #C> // arrow.core.raise.context/bindAll|bindAll(arrow.core.raise.Raise<0:0>)@kotlin.collections.Map<0:1,arrow.core.Either<0:0,0:2>>(){0§;1§;2§}[0] +final fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?> (context(arrow.core.raise/SingletonRaise<#A>), kotlin.collections/Map<#B, #C?>).arrow.core.raise.context/bindAll(): kotlin.collections/Map<#B, #C> // arrow.core.raise.context/bindAll|bindAll(arrow.core.raise.SingletonRaise<0:0>)@kotlin.collections.Map<0:1,0:2?>(){0§;1§;2§}[0] +final fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?> (context(arrow.core.raise/SingletonRaise<#A>), kotlin.collections/Map<#B, arrow.core/Option<#C>>).arrow.core.raise.context/bindAll(): kotlin.collections/Map<#B, #C> // arrow.core.raise.context/bindAll|bindAll(arrow.core.raise.SingletonRaise<0:0>)@kotlin.collections.Map<0:1,arrow.core.Option<0:2>>(){0§;1§;2§}[0] final fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?> (kotlin.collections/Iterable<#A>).arrow.core/crosswalkMap(kotlin/Function1<#A, kotlin.collections/Map<#B, #C>>): kotlin.collections/Map<#B, kotlin.collections/List<#C>> // arrow.core/crosswalkMap|crosswalkMap@kotlin.collections.Iterable<0:0>(kotlin.Function1<0:0,kotlin.collections.Map<0:1,0:2>>){0§;1§;2§}[0] final fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?> (kotlin.collections/Map<#A, #B>).arrow.core/align(kotlin.collections/Map<#A, #C>): kotlin.collections/Map<#A, arrow.core/Ior<#B, #C>> // arrow.core/align|align@kotlin.collections.Map<0:0,0:1>(kotlin.collections.Map<0:0,0:2>){0§;1§;2§}[0] final fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?> (kotlin.collections/Map<#A, #B>).arrow.core/flatMapValues(kotlin/Function1, kotlin.collections/Map<#A, #C>>): kotlin.collections/Map<#A, #C> // arrow.core/flatMapValues|flatMapValues@kotlin.collections.Map<0:0,0:1>(kotlin.Function1,kotlin.collections.Map<0:0,0:2>>){0§;1§;2§}[0] @@ -758,6 +765,22 @@ final fun <#A: kotlin/Any?, #B: kotlin/Any?> (arrow.core/Either<#A, arrow.core/E final fun <#A: kotlin/Any?, #B: kotlin/Any?> (arrow.core/Ior<#A, #B>).arrow.core/toIorNel(): arrow.core/Ior, #B> // arrow.core/toIorNel|toIorNel@arrow.core.Ior<0:0,0:1>(){0§;1§}[0] final fun <#A: kotlin/Any?, #B: kotlin/Any?> (arrow.core/NonEmptyList>).arrow.core/unzip(): kotlin/Pair, arrow.core/NonEmptyList<#B>> // arrow.core/unzip|unzip@arrow.core.NonEmptyList>(){0§;1§}[0] final fun <#A: kotlin/Any?, #B: kotlin/Any?> (arrow.core/Option>).arrow.core/toMap(): kotlin.collections/Map<#A, #B> // arrow.core/toMap|toMap@arrow.core.Option>(){0§;1§}[0] +final fun <#A: kotlin/Any?, #B: kotlin/Any?> (context(arrow.core.raise/Raise<#A>), arrow.core/Either<#A, #B>).arrow.core.raise.context/bind(): #B // arrow.core.raise.context/bind|bind(arrow.core.raise.Raise<0:0>)@arrow.core.Either<0:0,0:1>(){0§;1§}[0] +final fun <#A: kotlin/Any?, #B: kotlin/Any?> (context(arrow.core.raise/Raise<#A>), arrow.core/NonEmptyList>).arrow.core.raise.context/bindAll(): arrow.core/NonEmptyList<#B> // arrow.core.raise.context/bindAll|bindAll(arrow.core.raise.Raise<0:0>)@arrow.core.NonEmptyList>(){0§;1§}[0] +final fun <#A: kotlin/Any?, #B: kotlin/Any?> (context(arrow.core.raise/Raise<#A>), arrow.core/NonEmptySet>).arrow.core.raise.context/bindAll(): arrow.core/NonEmptySet<#B> // arrow.core.raise.context/bindAll|bindAll(arrow.core.raise.Raise<0:0>)@arrow.core.NonEmptySet>(){0§;1§}[0] +final fun <#A: kotlin/Any?, #B: kotlin/Any?> (context(arrow.core.raise/Raise<#A>), kotlin.collections/Iterable>).arrow.core.raise.context/bindAll(): kotlin.collections/List<#B> // arrow.core.raise.context/bindAll|bindAll(arrow.core.raise.Raise<0:0>)@kotlin.collections.Iterable>(){0§;1§}[0] +final fun <#A: kotlin/Any?, #B: kotlin/Any?> (context(arrow.core.raise/RaiseAccumulate<#A>), arrow.core/Either<#A, #B>).arrow.core.raise.context/bindOrAccumulate(): arrow.core.raise/RaiseAccumulate.Value<#B> // arrow.core.raise.context/bindOrAccumulate|bindOrAccumulate(arrow.core.raise.RaiseAccumulate<0:0>)@arrow.core.Either<0:0,0:1>(){0§;1§}[0] +final fun <#A: kotlin/Any?, #B: kotlin/Any?> (context(arrow.core.raise/RaiseAccumulate<#A>), arrow.core/Either, #B>).arrow.core.raise.context/bindNelOrAccumulate(): arrow.core.raise/RaiseAccumulate.Value<#B> // arrow.core.raise.context/bindNelOrAccumulate|bindNelOrAccumulate(arrow.core.raise.RaiseAccumulate<0:0>)@arrow.core.Either,0:1>(){0§;1§}[0] +final fun <#A: kotlin/Any?, #B: kotlin/Any?> (context(arrow.core.raise/RaiseAccumulate<#A>), kotlin.collections/Iterable>).arrow.core.raise.context/bindAllOrAccumulate(): arrow.core.raise/RaiseAccumulate.Value> // arrow.core.raise.context/bindAllOrAccumulate|bindAllOrAccumulate(arrow.core.raise.RaiseAccumulate<0:0>)@kotlin.collections.Iterable>(){0§;1§}[0] +final fun <#A: kotlin/Any?, #B: kotlin/Any?> (context(arrow.core.raise/ResultRaise), kotlin.collections/Map<#A, kotlin/Result<#B>>).arrow.core.raise.context/bindAll(): kotlin.collections/Map<#A, #B> // arrow.core.raise.context/bindAll|bindAll(arrow.core.raise.ResultRaise)@kotlin.collections.Map<0:0,kotlin.Result<0:1>>(){0§;1§}[0] +final fun <#A: kotlin/Any?, #B: kotlin/Any?> (context(arrow.core.raise/SingletonRaise<#A>), #B?).arrow.core.raise.context/bind(): #B // arrow.core.raise.context/bind|bind(arrow.core.raise.SingletonRaise<0:0>)@0:1?(){0§;1§}[0] +final fun <#A: kotlin/Any?, #B: kotlin/Any?> (context(arrow.core.raise/SingletonRaise<#A>), arrow.core/NonEmptyList<#B?>).arrow.core.raise.context/bindAll(): arrow.core/NonEmptyList<#B> // arrow.core.raise.context/bindAll|bindAll(arrow.core.raise.SingletonRaise<0:0>)@arrow.core.NonEmptyList<0:1?>(){0§;1§}[0] +final fun <#A: kotlin/Any?, #B: kotlin/Any?> (context(arrow.core.raise/SingletonRaise<#A>), arrow.core/NonEmptyList>).arrow.core.raise.context/bindAll(): arrow.core/NonEmptyList<#B> // arrow.core.raise.context/bindAll|bindAll(arrow.core.raise.SingletonRaise<0:0>)@arrow.core.NonEmptyList>(){0§;1§}[0] +final fun <#A: kotlin/Any?, #B: kotlin/Any?> (context(arrow.core.raise/SingletonRaise<#A>), arrow.core/NonEmptySet<#B?>).arrow.core.raise.context/bindAll(): arrow.core/NonEmptySet<#B> // arrow.core.raise.context/bindAll|bindAll(arrow.core.raise.SingletonRaise<0:0>)@arrow.core.NonEmptySet<0:1?>(){0§;1§}[0] +final fun <#A: kotlin/Any?, #B: kotlin/Any?> (context(arrow.core.raise/SingletonRaise<#A>), arrow.core/NonEmptySet>).arrow.core.raise.context/bindAll(): arrow.core/NonEmptySet<#B> // arrow.core.raise.context/bindAll|bindAll(arrow.core.raise.SingletonRaise<0:0>)@arrow.core.NonEmptySet>(){0§;1§}[0] +final fun <#A: kotlin/Any?, #B: kotlin/Any?> (context(arrow.core.raise/SingletonRaise<#A>), arrow.core/Option<#B>).arrow.core.raise.context/bind(): #B // arrow.core.raise.context/bind|bind(arrow.core.raise.SingletonRaise<0:0>)@arrow.core.Option<0:1>(){0§;1§}[0] +final fun <#A: kotlin/Any?, #B: kotlin/Any?> (context(arrow.core.raise/SingletonRaise<#A>), kotlin.collections/Iterable<#B?>).arrow.core.raise.context/bindAll(): kotlin.collections/List<#B> // arrow.core.raise.context/bindAll|bindAll(arrow.core.raise.SingletonRaise<0:0>)@kotlin.collections.Iterable<0:1?>(){0§;1§}[0] +final fun <#A: kotlin/Any?, #B: kotlin/Any?> (context(arrow.core.raise/SingletonRaise<#A>), kotlin.collections/Iterable>).arrow.core.raise.context/bindAll(): kotlin.collections/List<#B> // arrow.core.raise.context/bindAll|bindAll(arrow.core.raise.SingletonRaise<0:0>)@kotlin.collections.Iterable>(){0§;1§}[0] final fun <#A: kotlin/Any?, #B: kotlin/Any?> (kotlin.collections/Iterable<#A>).arrow.core/align(kotlin.collections/Iterable<#B>): kotlin.collections/List> // arrow.core/align|align@kotlin.collections.Iterable<0:0>(kotlin.collections.Iterable<0:1>){0§;1§}[0] final fun <#A: kotlin/Any?, #B: kotlin/Any?> (kotlin.collections/Iterable<#A>).arrow.core/crosswalk(kotlin/Function1<#A, kotlin.collections/Iterable<#B>>): kotlin.collections/List> // arrow.core/crosswalk|crosswalk@kotlin.collections.Iterable<0:0>(kotlin.Function1<0:0,kotlin.collections.Iterable<0:1>>){0§;1§}[0] final fun <#A: kotlin/Any?, #B: kotlin/Any?> (kotlin.collections/Iterable<#A>).arrow.core/crosswalkNull(kotlin/Function1<#A, #B?>): kotlin.collections/List<#B>? // arrow.core/crosswalkNull|crosswalkNull@kotlin.collections.Iterable<0:0>(kotlin.Function1<0:0,0:1?>){0§;1§}[0] @@ -805,6 +828,12 @@ final fun <#A: kotlin/Any?> (#A?).arrow.core/toOption(): arrow.core/Option<#A> / final fun <#A: kotlin/Any?> (arrow.core/Either<#A, #A>).arrow.core/merge(): #A // arrow.core/merge|merge@arrow.core.Either<0:0,0:0>(){0§}[0] final fun <#A: kotlin/Any?> (arrow.core/NonEmptyList>).arrow.core/flatten(): arrow.core/NonEmptyList<#A> // arrow.core/flatten|flatten@arrow.core.NonEmptyList>(){0§}[0] final fun <#A: kotlin/Any?> (arrow.core/Option>).arrow.core/flatten(): arrow.core/Option<#A> // arrow.core/flatten|flatten@arrow.core.Option>(){0§}[0] +final fun <#A: kotlin/Any?> (context(arrow.core.raise/Raise<#A>)).arrow.core.raise.context/raise(#A): kotlin/Nothing // arrow.core.raise.context/raise|raise(arrow.core.raise.Raise<0:0>)(0:0){0§}[0] +final fun <#A: kotlin/Any?> (context(arrow.core.raise/RaiseAccumulate), arrow.core/Either, #A>).arrow.core.raise.context/bindNel(): #A // arrow.core.raise.context/bindNel|bindNel(arrow.core.raise.RaiseAccumulate)@arrow.core.Either,0:0>(){0§}[0] +final fun <#A: kotlin/Any?> (context(arrow.core.raise/ResultRaise), arrow.core/NonEmptyList>).arrow.core.raise.context/bindAll(): arrow.core/NonEmptyList<#A> // arrow.core.raise.context/bindAll|bindAll(arrow.core.raise.ResultRaise)@arrow.core.NonEmptyList>(){0§}[0] +final fun <#A: kotlin/Any?> (context(arrow.core.raise/ResultRaise), arrow.core/NonEmptySet>).arrow.core.raise.context/bindAll(): arrow.core/NonEmptySet<#A> // arrow.core.raise.context/bindAll|bindAll(arrow.core.raise.ResultRaise)@arrow.core.NonEmptySet>(){0§}[0] +final fun <#A: kotlin/Any?> (context(arrow.core.raise/ResultRaise), kotlin.collections/Iterable>).arrow.core.raise.context/bindAll(): kotlin.collections/List<#A> // arrow.core.raise.context/bindAll|bindAll(arrow.core.raise.ResultRaise)@kotlin.collections.Iterable>(){0§}[0] +final fun <#A: kotlin/Any?> (context(arrow.core.raise/ResultRaise), kotlin/Result<#A>).arrow.core.raise.context/bind(): #A // arrow.core.raise.context/bind|bind(arrow.core.raise.ResultRaise)@kotlin.Result<0:0>(){0§}[0] final fun <#A: kotlin/Any?> (kotlin.collections/Iterable<#A>).arrow.core/collectionSizeOrDefault(kotlin/Int): kotlin/Int // arrow.core/collectionSizeOrDefault|collectionSizeOrDefault@kotlin.collections.Iterable<0:0>(kotlin.Int){0§}[0] final fun <#A: kotlin/Any?> (kotlin.collections/Iterable<#A>).arrow.core/elementAtOrNone(kotlin/Int): arrow.core/Option<#A> // arrow.core/elementAtOrNone|elementAtOrNone@kotlin.collections.Iterable<0:0>(kotlin.Int){0§}[0] final fun <#A: kotlin/Any?> (kotlin.collections/Iterable<#A>).arrow.core/firstOrNone(): arrow.core/Option<#A> // arrow.core/firstOrNone|firstOrNone@kotlin.collections.Iterable<0:0>(){0§}[0] @@ -877,6 +906,8 @@ final fun arrow.core/sort(kotlin/Short, kotlin/Short): kotlin/Pair // arrow.core/sort|sort(kotlin.Short;kotlin.Short;kotlin.Short){}[0] final fun arrow.core/sort(kotlin/Short, kotlin/ShortArray...): kotlin.collections/List // arrow.core/sort|sort(kotlin.Short;kotlin.ShortArray...){}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any> (arrow.core.raise/Raise<#A>).arrow.core.raise/ensureNotNull(#B?, kotlin/Function0<#A>): #B // arrow.core.raise/ensureNotNull|ensureNotNull@arrow.core.raise.Raise<0:0>(0:1?;kotlin.Function0<0:0>){0§;1§}[0] +final inline fun <#A: kotlin/Any?, #B: kotlin/Any> (context(arrow.core.raise/Raise<#A>)).arrow.core.raise.context/ensureNotNull(#B?, kotlin/Function0<#A>): #B // arrow.core.raise.context/ensureNotNull|ensureNotNull(arrow.core.raise.Raise<0:0>)(0:1?;kotlin.Function0<0:0>){0§;1§}[0] +final inline fun <#A: kotlin/Any?, #B: kotlin/Any> (context(arrow.core.raise/RaiseAccumulate<#A>)).arrow.core.raise.context/ensureNotNullOrAccumulate(#B?, kotlin/Function0<#A>): arrow.core.raise/RaiseAccumulate.Value<#B> // arrow.core.raise.context/ensureNotNullOrAccumulate|ensureNotNullOrAccumulate(arrow.core.raise.RaiseAccumulate<0:0>)(0:1?;kotlin.Function0<0:0>){0§;1§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/Any?, #E: kotlin/Any?, #F: kotlin/Any?, #G: kotlin/Any?, #H: kotlin/Any?, #I: kotlin/Any?, #J: kotlin/Any?, #K: kotlin/Any?, #L: kotlin/Any?> (kotlin.collections/Map<#A, #B>).arrow.core/zip(kotlin.collections/Map<#A, #C>, kotlin.collections/Map<#A, #D>, kotlin.collections/Map<#A, #E>, kotlin.collections/Map<#A, #F>, kotlin.collections/Map<#A, #G>, kotlin.collections/Map<#A, #H>, kotlin.collections/Map<#A, #I>, kotlin.collections/Map<#A, #J>, kotlin.collections/Map<#A, #K>, kotlin/Function11<#A, #B, #C, #D, #E, #F, #G, #H, #I, #J, #K, #L>): kotlin.collections/Map<#A, #L> // arrow.core/zip|zip@kotlin.collections.Map<0:0,0:1>(kotlin.collections.Map<0:0,0:2>;kotlin.collections.Map<0:0,0:3>;kotlin.collections.Map<0:0,0:4>;kotlin.collections.Map<0:0,0:5>;kotlin.collections.Map<0:0,0:6>;kotlin.collections.Map<0:0,0:7>;kotlin.collections.Map<0:0,0:8>;kotlin.collections.Map<0:0,0:9>;kotlin.collections.Map<0:0,0:10>;kotlin.Function11<0:0,0:1,0:2,0:3,0:4,0:5,0:6,0:7,0:8,0:9,0:10,0:11>){0§;1§;2§;3§;4§;5§;6§;7§;8§;9§;10§;11§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/Any?, #E: kotlin/Any?, #F: kotlin/Any?, #G: kotlin/Any?, #H: kotlin/Any?, #I: kotlin/Any?, #J: kotlin/Any?, #K: kotlin/Any?> (arrow.core.raise/Raise<#A>).arrow.core.raise/zipOrAccumulate(kotlin/Function2<#A, #A, #A>, kotlin/Function1, #B>, kotlin/Function1, #C>, kotlin/Function1, #D>, kotlin/Function1, #E>, kotlin/Function1, #F>, kotlin/Function1, #G>, kotlin/Function1, #H>, kotlin/Function1, #I>, kotlin/Function1, #J>, kotlin/Function9<#B, #C, #D, #E, #F, #G, #H, #I, #J, #K>): #K // arrow.core.raise/zipOrAccumulate|zipOrAccumulate@arrow.core.raise.Raise<0:0>(kotlin.Function2<0:0,0:0,0:0>;kotlin.Function1,0:1>;kotlin.Function1,0:2>;kotlin.Function1,0:3>;kotlin.Function1,0:4>;kotlin.Function1,0:5>;kotlin.Function1,0:6>;kotlin.Function1,0:7>;kotlin.Function1,0:8>;kotlin.Function1,0:9>;kotlin.Function9<0:1,0:2,0:3,0:4,0:5,0:6,0:7,0:8,0:9,0:10>){0§;1§;2§;3§;4§;5§;6§;7§;8§;9§;10§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/Any?, #E: kotlin/Any?, #F: kotlin/Any?, #G: kotlin/Any?, #H: kotlin/Any?, #I: kotlin/Any?, #J: kotlin/Any?, #K: kotlin/Any?> (arrow.core.raise/Raise>).arrow.core.raise/zipOrAccumulate(kotlin/Function1, #B>, kotlin/Function1, #C>, kotlin/Function1, #D>, kotlin/Function1, #E>, kotlin/Function1, #F>, kotlin/Function1, #G>, kotlin/Function1, #H>, kotlin/Function1, #I>, kotlin/Function1, #J>, kotlin/Function9<#B, #C, #D, #E, #F, #G, #H, #I, #J, #K>): #K // arrow.core.raise/zipOrAccumulate|zipOrAccumulate@arrow.core.raise.Raise>(kotlin.Function1,0:1>;kotlin.Function1,0:2>;kotlin.Function1,0:3>;kotlin.Function1,0:4>;kotlin.Function1,0:5>;kotlin.Function1,0:6>;kotlin.Function1,0:7>;kotlin.Function1,0:8>;kotlin.Function1,0:9>;kotlin.Function9<0:1,0:2,0:3,0:4,0:5,0:6,0:7,0:8,0:9,0:10>){0§;1§;2§;3§;4§;5§;6§;7§;8§;9§;10§}[0] @@ -900,10 +931,12 @@ final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/ final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/Any?, #E: kotlin/Any?, #F: kotlin/Any?, #G: kotlin/Any?> (kotlin.collections/Map<#A, #B>).arrow.core/zip(kotlin.collections/Map<#A, #C>, kotlin.collections/Map<#A, #D>, kotlin.collections/Map<#A, #E>, kotlin.collections/Map<#A, #F>, kotlin/Function6<#A, #B, #C, #D, #E, #F, #G>): kotlin.collections/Map<#A, #G> // arrow.core/zip|zip@kotlin.collections.Map<0:0,0:1>(kotlin.collections.Map<0:0,0:2>;kotlin.collections.Map<0:0,0:3>;kotlin.collections.Map<0:0,0:4>;kotlin.collections.Map<0:0,0:5>;kotlin.Function6<0:0,0:1,0:2,0:3,0:4,0:5,0:6>){0§;1§;2§;3§;4§;5§;6§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/Any?, #E: kotlin/Any?, #F: kotlin/Any?> (arrow.core.raise/Raise<#A>).arrow.core.raise/zipOrAccumulate(kotlin/Function2<#A, #A, #A>, kotlin/Function1, #B>, kotlin/Function1, #C>, kotlin/Function1, #D>, kotlin/Function1, #E>, kotlin/Function4<#B, #C, #D, #E, #F>): #F // arrow.core.raise/zipOrAccumulate|zipOrAccumulate@arrow.core.raise.Raise<0:0>(kotlin.Function2<0:0,0:0,0:0>;kotlin.Function1,0:1>;kotlin.Function1,0:2>;kotlin.Function1,0:3>;kotlin.Function1,0:4>;kotlin.Function4<0:1,0:2,0:3,0:4,0:5>){0§;1§;2§;3§;4§;5§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/Any?, #E: kotlin/Any?, #F: kotlin/Any?> (arrow.core.raise/Raise>).arrow.core.raise/zipOrAccumulate(kotlin/Function1, #B>, kotlin/Function1, #C>, kotlin/Function1, #D>, kotlin/Function1, #E>, kotlin/Function4<#B, #C, #D, #E, #F>): #F // arrow.core.raise/zipOrAccumulate|zipOrAccumulate@arrow.core.raise.Raise>(kotlin.Function1,0:1>;kotlin.Function1,0:2>;kotlin.Function1,0:3>;kotlin.Function1,0:4>;kotlin.Function4<0:1,0:2,0:3,0:4,0:5>){0§;1§;2§;3§;4§;5§}[0] +final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/Any?, #E: kotlin/Any?, #F: kotlin/Any?> (context(arrow.core.raise/Raise>)).arrow.core.raise.context/zipOrAccumulate(kotlin/Function1, #B>, kotlin/Function1, #C>, kotlin/Function1, #D>, kotlin/Function1, #E>, kotlin/Function4<#B, #C, #D, #E, #F>): #F // arrow.core.raise.context/zipOrAccumulate|zipOrAccumulate(arrow.core.raise.Raise>)(kotlin.Function1,0:1>;kotlin.Function1,0:2>;kotlin.Function1,0:3>;kotlin.Function1,0:4>;kotlin.Function4<0:1,0:2,0:3,0:4,0:5>){0§;1§;2§;3§;4§;5§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/Any?, #E: kotlin/Any?, #F: kotlin/Any?> (kotlin.collections/Iterable<#A>).arrow.core/zip(kotlin.collections/Iterable<#B>, kotlin.collections/Iterable<#C>, kotlin.collections/Iterable<#D>, kotlin.collections/Iterable<#E>, kotlin/Function5<#A, #B, #C, #D, #E, #F>): kotlin.collections/List<#F> // arrow.core/zip|zip@kotlin.collections.Iterable<0:0>(kotlin.collections.Iterable<0:1>;kotlin.collections.Iterable<0:2>;kotlin.collections.Iterable<0:3>;kotlin.collections.Iterable<0:4>;kotlin.Function5<0:0,0:1,0:2,0:3,0:4,0:5>){0§;1§;2§;3§;4§;5§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/Any?, #E: kotlin/Any?, #F: kotlin/Any?> (kotlin.collections/Map<#A, #B>).arrow.core/zip(kotlin.collections/Map<#A, #C>, kotlin.collections/Map<#A, #D>, kotlin.collections/Map<#A, #E>, kotlin/Function5<#A, #B, #C, #D, #E, #F>): kotlin.collections/Map<#A, #F> // arrow.core/zip|zip@kotlin.collections.Map<0:0,0:1>(kotlin.collections.Map<0:0,0:2>;kotlin.collections.Map<0:0,0:3>;kotlin.collections.Map<0:0,0:4>;kotlin.Function5<0:0,0:1,0:2,0:3,0:4,0:5>){0§;1§;2§;3§;4§;5§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/Any?, #E: kotlin/Any?> (arrow.core.raise/Raise<#A>).arrow.core.raise/zipOrAccumulate(kotlin/Function2<#A, #A, #A>, kotlin/Function1, #B>, kotlin/Function1, #C>, kotlin/Function1, #D>, kotlin/Function3<#B, #C, #D, #E>): #E // arrow.core.raise/zipOrAccumulate|zipOrAccumulate@arrow.core.raise.Raise<0:0>(kotlin.Function2<0:0,0:0,0:0>;kotlin.Function1,0:1>;kotlin.Function1,0:2>;kotlin.Function1,0:3>;kotlin.Function3<0:1,0:2,0:3,0:4>){0§;1§;2§;3§;4§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/Any?, #E: kotlin/Any?> (arrow.core.raise/Raise>).arrow.core.raise/zipOrAccumulate(kotlin/Function1, #B>, kotlin/Function1, #C>, kotlin/Function1, #D>, kotlin/Function3<#B, #C, #D, #E>): #E // arrow.core.raise/zipOrAccumulate|zipOrAccumulate@arrow.core.raise.Raise>(kotlin.Function1,0:1>;kotlin.Function1,0:2>;kotlin.Function1,0:3>;kotlin.Function3<0:1,0:2,0:3,0:4>){0§;1§;2§;3§;4§}[0] +final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/Any?, #E: kotlin/Any?> (context(arrow.core.raise/Raise>)).arrow.core.raise.context/zipOrAccumulate(kotlin/Function1, #B>, kotlin/Function1, #C>, kotlin/Function1, #D>, kotlin/Function3<#B, #C, #D, #E>): #E // arrow.core.raise.context/zipOrAccumulate|zipOrAccumulate(arrow.core.raise.Raise>)(kotlin.Function1,0:1>;kotlin.Function1,0:2>;kotlin.Function1,0:3>;kotlin.Function3<0:1,0:2,0:3,0:4>){0§;1§;2§;3§;4§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/Any?, #E: kotlin/Any?> (kotlin.collections/Iterable<#A>).arrow.core/zip(kotlin.collections/Iterable<#B>, kotlin.collections/Iterable<#C>, kotlin.collections/Iterable<#D>, kotlin/Function4<#A, #B, #C, #D, #E>): kotlin.collections/List<#E> // arrow.core/zip|zip@kotlin.collections.Iterable<0:0>(kotlin.collections.Iterable<0:1>;kotlin.collections.Iterable<0:2>;kotlin.collections.Iterable<0:3>;kotlin.Function4<0:0,0:1,0:2,0:3,0:4>){0§;1§;2§;3§;4§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/Any?, #E: kotlin/Any?> (kotlin.collections/Map<#A, #B>).arrow.core/zip(kotlin.collections/Map<#A, #C>, kotlin.collections/Map<#A, #D>, kotlin/Function4<#A, #B, #C, #D, #E>): kotlin.collections/Map<#A, #E> // arrow.core/zip|zip@kotlin.collections.Map<0:0,0:1>(kotlin.collections.Map<0:0,0:2>;kotlin.collections.Map<0:0,0:3>;kotlin.Function4<0:0,0:1,0:2,0:3,0:4>){0§;1§;2§;3§;4§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/Any?> (arrow.core.raise/Raise<#A>).arrow.core.raise/zipOrAccumulate(kotlin/Function2<#A, #A, #A>, kotlin/Function1, #B>, kotlin/Function1, #C>, kotlin/Function2<#B, #C, #D>): #D // arrow.core.raise/zipOrAccumulate|zipOrAccumulate@arrow.core.raise.Raise<0:0>(kotlin.Function2<0:0,0:0,0:0>;kotlin.Function1,0:1>;kotlin.Function1,0:2>;kotlin.Function2<0:1,0:2,0:3>){0§;1§;2§;3§}[0] @@ -912,6 +945,8 @@ final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/ final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/Any?> (arrow.core.raise/Raise>).arrow.core.raise/zipOrAccumulate(kotlin/Function1, #B>, kotlin/Function1, #C>, kotlin/Function2<#B, #C, #D>): #D // arrow.core.raise/zipOrAccumulate|zipOrAccumulate@arrow.core.raise.Raise>(kotlin.Function1,0:1>;kotlin.Function1,0:2>;kotlin.Function2<0:1,0:2,0:3>){0§;1§;2§;3§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/Any?> (arrow.core.raise/Raise>).arrow.core.raise/mapOrAccumulate(kotlin.collections/Map<#A, #C>, kotlin/Function2, kotlin.collections/Map.Entry<#A, #C>, #D>): kotlin.collections/Map<#A, #D> // arrow.core.raise/mapOrAccumulate|mapOrAccumulate@arrow.core.raise.Raise>(kotlin.collections.Map<0:0,0:2>;kotlin.Function2,kotlin.collections.Map.Entry<0:0,0:2>,0:3>){0§;1§;2§;3§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/Any?> (arrow.core.raise/Raise>).arrow.core.raise/mapValuesOrAccumulate(kotlin.collections/Map<#A, #C>, kotlin/Function2, kotlin.collections/Map.Entry<#A, #C>, #D>): kotlin.collections/Map<#A, #D> // arrow.core.raise/mapValuesOrAccumulate|mapValuesOrAccumulate@arrow.core.raise.Raise>(kotlin.collections.Map<0:0,0:2>;kotlin.Function2,kotlin.collections.Map.Entry<0:0,0:2>,0:3>){0§;1§;2§;3§}[0] +final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/Any?> (context(arrow.core.raise/Raise>)).arrow.core.raise.context/zipOrAccumulate(kotlin/Function1, #B>, kotlin/Function1, #C>, kotlin/Function2<#B, #C, #D>): #D // arrow.core.raise.context/zipOrAccumulate|zipOrAccumulate(arrow.core.raise.Raise>)(kotlin.Function1,0:1>;kotlin.Function1,0:2>;kotlin.Function2<0:1,0:2,0:3>){0§;1§;2§;3§}[0] +final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/Any?> (context(arrow.core.raise/Raise>), kotlin.collections/Map<#A, #C>).arrow.core.raise.context/mapValuesOrAccumulate(kotlin/Function2, kotlin.collections/Map.Entry<#A, #C>, #D>): kotlin.collections/Map<#A, #D> // arrow.core.raise.context/mapValuesOrAccumulate|mapValuesOrAccumulate(arrow.core.raise.Raise>)@kotlin.collections.Map<0:0,0:2>(kotlin.Function2,kotlin.collections.Map.Entry<0:0,0:2>,0:3>){0§;1§;2§;3§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/Any?> (kotlin.collections/Iterable<#A>).arrow.core/zip(kotlin.collections/Iterable<#B>, kotlin.collections/Iterable<#C>, kotlin/Function3<#A, #B, #C, #D>): kotlin.collections/List<#D> // arrow.core/zip|zip@kotlin.collections.Iterable<0:0>(kotlin.collections.Iterable<0:1>;kotlin.collections.Iterable<0:2>;kotlin.Function3<0:0,0:1,0:2,0:3>){0§;1§;2§;3§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/Any?> (kotlin.collections/Map<#A, #B>).arrow.core/padZip(kotlin.collections/Map<#A, #C>, kotlin/Function2<#A, #B, #D>, kotlin/Function2<#A, #C, #D>, kotlin/Function3<#A, #B, #C, #D>): kotlin.collections/Map<#A, #D> // arrow.core/padZip|padZip@kotlin.collections.Map<0:0,0:1>(kotlin.collections.Map<0:0,0:2>;kotlin.Function2<0:0,0:1,0:3>;kotlin.Function2<0:0,0:2,0:3>;kotlin.Function3<0:0,0:1,0:2,0:3>){0§;1§;2§;3§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?, #D: kotlin/Any?> (kotlin.collections/Map<#A, #B>).arrow.core/zip(kotlin.collections/Map<#A, #C>, kotlin/Function3<#A, #B, #C, #D>): kotlin.collections/Map<#A, #D> // arrow.core/zip|zip@kotlin.collections.Map<0:0,0:1>(kotlin.collections.Map<0:0,0:2>;kotlin.Function3<0:0,0:1,0:2,0:3>){0§;1§;2§;3§}[0] @@ -939,6 +974,10 @@ final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?> (arrow.core final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?> (arrow.core/NonEmptyList<#C>).arrow.core/unzip(kotlin/Function1<#C, kotlin/Pair<#A, #B>>): kotlin/Pair, arrow.core/NonEmptyList<#B>> // arrow.core/unzip|unzip@arrow.core.NonEmptyList<0:2>(kotlin.Function1<0:2,kotlin.Pair<0:0,0:1>>){0§;1§;2§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?> (arrow.core/NonEmptySet<#B>).arrow.core/mapOrAccumulate(kotlin/Function2<#A, #A, #A>, kotlin/Function2, #B, #C>): arrow.core/Either<#A, arrow.core/NonEmptySet<#C>> // arrow.core/mapOrAccumulate|mapOrAccumulate@arrow.core.NonEmptySet<0:1>(kotlin.Function2<0:0,0:0,0:0>;kotlin.Function2,0:1,0:2>){0§;1§;2§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?> (arrow.core/NonEmptySet<#B>).arrow.core/mapOrAccumulate(kotlin/Function2, #B, #C>): arrow.core/Either, arrow.core/NonEmptySet<#C>> // arrow.core/mapOrAccumulate|mapOrAccumulate@arrow.core.NonEmptySet<0:1>(kotlin.Function2,0:1,0:2>){0§;1§;2§}[0] +final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?> (context(arrow.core.raise/Raise<#A>)).arrow.core.raise.context/withError(kotlin/Function1<#B, #A>, kotlin/Function1, #C>): #C // arrow.core.raise.context/withError|withError(arrow.core.raise.Raise<0:0>)(kotlin.Function1<0:1,0:0>;kotlin.Function1,0:2>){0§;1§;2§}[0] +final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?> (context(arrow.core.raise/Raise>), arrow.core/NonEmptyList<#B>).arrow.core.raise.context/mapOrAccumulate(kotlin/Function2, #B, #C>): arrow.core/NonEmptyList<#C> // arrow.core.raise.context/mapOrAccumulate|mapOrAccumulate(arrow.core.raise.Raise>)@arrow.core.NonEmptyList<0:1>(kotlin.Function2,0:1,0:2>){0§;1§;2§}[0] +final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?> (context(arrow.core.raise/Raise>), kotlin.collections/Iterable<#B>).arrow.core.raise.context/mapOrAccumulate(kotlin/Function2, #B, #C>): kotlin.collections/List<#C> // arrow.core.raise.context/mapOrAccumulate|mapOrAccumulate(arrow.core.raise.Raise>)@kotlin.collections.Iterable<0:1>(kotlin.Function2,0:1,0:2>){0§;1§;2§}[0] +final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?> (context(arrow.core.raise/Raise>), kotlin.sequences/Sequence<#B>).arrow.core.raise.context/mapOrAccumulate(kotlin/Function2, #B, #C>): kotlin.collections/List<#C> // arrow.core.raise.context/mapOrAccumulate|mapOrAccumulate(arrow.core.raise.Raise>)@kotlin.sequences.Sequence<0:1>(kotlin.Function2,0:1,0:2>){0§;1§;2§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?> (kotlin.collections/Iterable<#A>).arrow.core/align(kotlin.collections/Iterable<#B>, kotlin/Function1, #C>): kotlin.collections/List<#C> // arrow.core/align|align@kotlin.collections.Iterable<0:0>(kotlin.collections.Iterable<0:1>;kotlin.Function1,0:2>){0§;1§;2§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?> (kotlin.collections/Iterable<#A>).arrow.core/leftPadZip(kotlin.collections/Iterable<#B>, kotlin/Function2<#A?, #B, #C>): kotlin.collections/List<#C> // arrow.core/leftPadZip|leftPadZip@kotlin.collections.Iterable<0:0>(kotlin.collections.Iterable<0:1>;kotlin.Function2<0:0?,0:1,0:2>){0§;1§;2§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?> (kotlin.collections/Iterable<#A>).arrow.core/padZip(kotlin.collections/Iterable<#B>, kotlin/Function1<#A, #C>, kotlin/Function1<#B, #C>, kotlin/Function2<#A, #B, #C>): kotlin.collections/List<#C> // arrow.core/padZip|padZip@kotlin.collections.Iterable<0:0>(kotlin.collections.Iterable<0:1>;kotlin.Function1<0:0,0:2>;kotlin.Function1<0:1,0:2>;kotlin.Function2<0:0,0:1,0:2>){0§;1§;2§}[0] @@ -970,6 +1009,8 @@ final inline fun <#A: kotlin/Any?, #B: kotlin/Any?> (arrow.core/Either<#A, #B>). final inline fun <#A: kotlin/Any?, #B: kotlin/Any?> (arrow.core/Ior<#A, #B>).arrow.core/combine(arrow.core/Ior<#A, #B>, kotlin/Function2<#A, #A, #A>, kotlin/Function2<#B, #B, #B>): arrow.core/Ior<#A, #B> // arrow.core/combine|combine@arrow.core.Ior<0:0,0:1>(arrow.core.Ior<0:0,0:1>;kotlin.Function2<0:0,0:0,0:0>;kotlin.Function2<0:1,0:1,0:1>){0§;1§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?> (arrow.core/Ior<#A, #B>).arrow.core/getOrElse(kotlin/Function1<#A, #B>): #B // arrow.core/getOrElse|getOrElse@arrow.core.Ior<0:0,0:1>(kotlin.Function1<0:0,0:1>){0§;1§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?> (arrow.core/Ior<#A, arrow.core/Ior<#A, #B>>).arrow.core/flatten(kotlin/Function2<#A, #A, #A>): arrow.core/Ior<#A, #B> // arrow.core/flatten|flatten@arrow.core.Ior<0:0,arrow.core.Ior<0:0,0:1>>(kotlin.Function2<0:0,0:0,0:0>){0§;1§}[0] +final inline fun <#A: kotlin/Any?, #B: kotlin/Any?> (context(arrow.core.raise/Raise>)).arrow.core.raise.context/accumulate(kotlin/Function1, #B>): #B // arrow.core.raise.context/accumulate|accumulate(arrow.core.raise.Raise>)(kotlin.Function1,0:1>){0§;1§}[0] +final inline fun <#A: kotlin/Any?, #B: kotlin/Any?> (context(arrow.core.raise/RaiseAccumulate<#A>)).arrow.core.raise.context/accumulating(kotlin/Function1, #B>): arrow.core.raise/RaiseAccumulate.Value<#B> // arrow.core.raise.context/accumulating|accumulating(arrow.core.raise.RaiseAccumulate<0:0>)(kotlin.Function1,0:1>){0§;1§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?> (kotlin.collections/Iterable<#A>).arrow.core/reduceOrNull(kotlin/Function1<#A, #B>, kotlin/Function2<#B, #A, #B>): #B? // arrow.core/reduceOrNull|reduceOrNull@kotlin.collections.Iterable<0:0>(kotlin.Function1<0:0,0:1>;kotlin.Function2<0:1,0:0,0:1>){0§;1§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?> (kotlin.collections/Iterable>).arrow.core/flattenOrAccumulate(kotlin/Function2<#A, #A, #A>): arrow.core/Either<#A, kotlin.collections/List<#B>> // arrow.core/flattenOrAccumulate|flattenOrAccumulate@kotlin.collections.Iterable>(kotlin.Function2<0:0,0:0,0:0>){0§;1§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?> (kotlin.collections/List<#A>).arrow.core/reduceRightNull(kotlin/Function1<#A, #B>, kotlin/Function2<#A, #B, #B>): #B? // arrow.core/reduceRightNull|reduceRightNull@kotlin.collections.List<0:0>(kotlin.Function1<0:0,0:1>;kotlin.Function2<0:0,0:1,0:1>){0§;1§}[0] @@ -977,6 +1018,9 @@ final inline fun <#A: kotlin/Any?, #B: kotlin/Any?> (kotlin/Function1 (kotlin/Function1, #B>).arrow.core.raise/toOption(kotlin/Function1<#A, arrow.core/Option<#B>>): arrow.core/Option<#B> // arrow.core.raise/toOption|toOption@kotlin.Function1,0:1>(kotlin.Function1<0:0,arrow.core.Option<0:1>>){0§;1§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?> (kotlin/Function1, #B>).arrow.core.raise/toResult(kotlin/Function1<#A, kotlin/Result<#B>>): kotlin/Result<#B> // arrow.core.raise/toResult|toResult@kotlin.Function1,0:1>(kotlin.Function1<0:0,kotlin.Result<0:1>>){0§;1§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?> (kotlin/Result<#A>).arrow.core/flatMap(kotlin/Function1<#A, kotlin/Result<#B>>): kotlin/Result<#B> // arrow.core/flatMap|flatMap@kotlin.Result<0:0>(kotlin.Function1<0:0,kotlin.Result<0:1>>){0§;1§}[0] +final inline fun <#A: kotlin/Any?, #B: kotlin/Any?> arrow.core.raise.context/either(kotlin/Function1, #B>): arrow.core/Either<#A, #B> // arrow.core.raise.context/either|either(kotlin.Function1,0:1>){0§;1§}[0] +final inline fun <#A: kotlin/Any?, #B: kotlin/Any?> arrow.core.raise.context/ior(noinline kotlin/Function2<#A, #A, #A>, kotlin/Function1, #B>): arrow.core/Ior<#A, #B> // arrow.core.raise.context/ior|ior(kotlin.Function2<0:0,0:0,0:0>;kotlin.Function1,0:1>){0§;1§}[0] +final inline fun <#A: kotlin/Any?, #B: kotlin/Any?> arrow.core.raise.context/iorNel(noinline kotlin/Function2, arrow.core/NonEmptyList<#A>, arrow.core/NonEmptyList<#A>> = ..., kotlin/Function1>, #B>): arrow.core/Ior, #B> // arrow.core.raise.context/iorNel|iorNel(kotlin.Function2,arrow.core.NonEmptyList<0:0>,arrow.core.NonEmptyList<0:0>>;kotlin.Function1>,0:1>){0§;1§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?> arrow.core.raise/eagerEffect(noinline kotlin/Function1, #B>): kotlin/Function1, #B> // arrow.core.raise/eagerEffect|eagerEffect(kotlin.Function1,0:1>){0§;1§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?> arrow.core.raise/effect(noinline kotlin.coroutines/SuspendFunction1, #B>): kotlin.coroutines/SuspendFunction1, #B> // arrow.core.raise/effect|effect(kotlin.coroutines.SuspendFunction1,0:1>){0§;1§}[0] final inline fun <#A: kotlin/Any?, #B: kotlin/Any?> arrow.core.raise/either(kotlin/Function1, #B>): arrow.core/Either<#A, #B> // arrow.core.raise/either|either(kotlin.Function1,0:1>){0§;1§}[0] @@ -993,9 +1037,16 @@ final inline fun <#A: kotlin/Any?> (arrow.core.raise/Raise<#A>).arrow.core.raise final inline fun <#A: kotlin/Any?> (arrow.core/Option<#A>).arrow.core/combine(arrow.core/Option<#A>, kotlin/Function2<#A, #A, #A>): arrow.core/Option<#A> // arrow.core/combine|combine@arrow.core.Option<0:0>(arrow.core.Option<0:0>;kotlin.Function2<0:0,0:0,0:0>){0§}[0] final inline fun <#A: kotlin/Any?> (arrow.core/Option<#A>).arrow.core/getOrElse(kotlin/Function0<#A>): #A // arrow.core/getOrElse|getOrElse@arrow.core.Option<0:0>(kotlin.Function0<0:0>){0§}[0] final inline fun <#A: kotlin/Any?> (arrow.core/Option<#A>).arrow.core/recover(kotlin/Function1, #A>): arrow.core/Option<#A> // arrow.core/recover|recover@arrow.core.Option<0:0>(kotlin.Function1,0:0>){0§}[0] +final inline fun <#A: kotlin/Any?> (context(arrow.core.raise/Raise<#A>)).arrow.core.raise.context/ensure(kotlin/Boolean, kotlin/Function0<#A>) // arrow.core.raise.context/ensure|ensure(arrow.core.raise.Raise<0:0>)(kotlin.Boolean;kotlin.Function0<0:0>){0§}[0] +final inline fun <#A: kotlin/Any?> (context(arrow.core.raise/RaiseAccumulate<#A>)).arrow.core.raise.context/ensureOrAccumulate(kotlin/Boolean, kotlin/Function0<#A>) // arrow.core.raise.context/ensureOrAccumulate|ensureOrAccumulate(arrow.core.raise.RaiseAccumulate<0:0>)(kotlin.Boolean;kotlin.Function0<0:0>){0§}[0] +final inline fun <#A: kotlin/Any?> (context(arrow.core.raise/RaiseAccumulate)).arrow.core.raise.context/withNel(kotlin/Function1>, #A>): #A // arrow.core.raise.context/withNel|withNel(arrow.core.raise.RaiseAccumulate)(kotlin.Function1>,0:0>){0§}[0] final inline fun <#A: kotlin/Any?> (kotlin.collections/Iterable<#A>).arrow.core/firstOrNone(kotlin/Function1<#A, kotlin/Boolean>): arrow.core/Option<#A> // arrow.core/firstOrNone|firstOrNone@kotlin.collections.Iterable<0:0>(kotlin.Function1<0:0,kotlin.Boolean>){0§}[0] final inline fun <#A: kotlin/Any?> (kotlin.collections/Iterable<#A>).arrow.core/lastOrNone(kotlin/Function1<#A, kotlin/Boolean>): arrow.core/Option<#A> // arrow.core/lastOrNone|lastOrNone@kotlin.collections.Iterable<0:0>(kotlin.Function1<0:0,kotlin.Boolean>){0§}[0] final inline fun <#A: kotlin/Any?> (kotlin.collections/Iterable<#A>).arrow.core/singleOrNone(kotlin/Function1<#A, kotlin/Boolean>): arrow.core/Option<#A> // arrow.core/singleOrNone|singleOrNone@kotlin.collections.Iterable<0:0>(kotlin.Function1<0:0,kotlin.Boolean>){0§}[0] +final inline fun <#A: kotlin/Any?> arrow.core.raise.context/nullable(kotlin/Function1, #A>): #A? // arrow.core.raise.context/nullable|nullable(kotlin.Function1,0:0>){0§}[0] +final inline fun <#A: kotlin/Any?> arrow.core.raise.context/option(kotlin/Function1, #A>): arrow.core/Option<#A> // arrow.core.raise.context/option|option(kotlin.Function1,0:0>){0§}[0] +final inline fun <#A: kotlin/Any?> arrow.core.raise.context/result(kotlin/Function1): kotlin/Result<#A> // arrow.core.raise.context/result|result(kotlin.Function1){0§}[0] +final inline fun <#A: kotlin/Any?> arrow.core.raise.context/singleton(kotlin/Function0<#A>, kotlin/Function1, #A>): #A // arrow.core.raise.context/singleton|singleton(kotlin.Function0<0:0>;kotlin.Function1,0:0>){0§}[0] final inline fun <#A: kotlin/Any?> arrow.core.raise/catch(kotlin/Function0<#A>, kotlin/Function1): #A // arrow.core.raise/catch|catch(kotlin.Function0<0:0>;kotlin.Function1){0§}[0] final inline fun <#A: kotlin/Any?> arrow.core.raise/merge(kotlin/Function1, #A>): #A // arrow.core.raise/merge|merge(kotlin.Function1,0:0>){0§}[0] final inline fun <#A: kotlin/Any?> arrow.core.raise/nullable(kotlin/Function1, #A>): #A? // arrow.core.raise/nullable|nullable(kotlin.Function1,0:0>){0§}[0] @@ -1010,9 +1061,11 @@ final inline fun <#A: reified kotlin/Throwable, #B: kotlin/Any?, #C: kotlin/Any? final inline fun <#A: reified kotlin/Throwable, #B: kotlin/Any?, #C: kotlin/Any?> (kotlin/Function1, #C>).arrow.core.raise/catch(crossinline kotlin/Function2, #A, #C>): kotlin/Function1, #C> // arrow.core.raise/catch|catch@kotlin.Function1,0:2>(kotlin.Function2,0:0,0:2>){0§;1§;2§}[0] final inline fun <#A: reified kotlin/Throwable, #B: kotlin/Any?, #C: kotlin/Any?> arrow.core.raise/recover(kotlin/Function1, #C>, kotlin/Function1<#B, #C>, kotlin/Function1<#A, #C>): #C // arrow.core.raise/recover|recover(kotlin.Function1,0:2>;kotlin.Function1<0:1,0:2>;kotlin.Function1<0:0,0:2>){0§;1§;2§}[0] final inline fun <#A: reified kotlin/Throwable, #B: kotlin/Any?> arrow.core.raise/catch(kotlin/Function0<#B>, kotlin/Function1<#A, #B>): #B // arrow.core.raise/catch|catch(kotlin.Function0<0:1>;kotlin.Function1<0:0,0:1>){0§;1§}[0] +final inline fun arrow.core.raise.context/impure(kotlin/Function1, kotlin/Unit>) // arrow.core.raise.context/impure|impure(kotlin.Function1,kotlin.Unit>){}[0] final inline fun arrow.core.raise/impure(kotlin/Function1, kotlin/Unit>) // arrow.core.raise/impure|impure(kotlin.Function1,kotlin.Unit>){}[0] final suspend fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?> (kotlin.coroutines/SuspendFunction1, #B>).arrow.core.raise/fold(kotlin.coroutines/SuspendFunction1<#A, #C>, kotlin.coroutines/SuspendFunction1<#B, #C>): #C // arrow.core.raise/fold|fold@kotlin.coroutines.SuspendFunction1,0:1>(kotlin.coroutines.SuspendFunction1<0:0,0:2>;kotlin.coroutines.SuspendFunction1<0:1,0:2>){0§;1§;2§}[0] final suspend fun <#A: kotlin/Any?, #B: kotlin/Any?, #C: kotlin/Any?> (kotlin.coroutines/SuspendFunction1, #B>).arrow.core.raise/fold(kotlin.coroutines/SuspendFunction1, kotlin.coroutines/SuspendFunction1<#A, #C>, kotlin.coroutines/SuspendFunction1<#B, #C>): #C // arrow.core.raise/fold|fold@kotlin.coroutines.SuspendFunction1,0:1>(kotlin.coroutines.SuspendFunction1;kotlin.coroutines.SuspendFunction1<0:0,0:2>;kotlin.coroutines.SuspendFunction1<0:1,0:2>){0§;1§;2§}[0] +final suspend fun <#A: kotlin/Any?, #B: kotlin/Any?> (context(arrow.core.raise/Raise<#A>), kotlin.coroutines/SuspendFunction1, #B>).arrow.core.raise.context/bind(): #B // arrow.core.raise.context/bind|bind(arrow.core.raise.Raise<0:0>)@kotlin.coroutines.SuspendFunction1,0:1>(){0§;1§}[0] final suspend fun <#A: kotlin/Any?, #B: kotlin/Any?> (kotlin.coroutines/SuspendFunction1, #B>).arrow.core.raise/getOrNull(): #B? // arrow.core.raise/getOrNull|getOrNull@kotlin.coroutines.SuspendFunction1,0:1>(){0§;1§}[0] final suspend fun <#A: kotlin/Any?, #B: kotlin/Any?> (kotlin.coroutines/SuspendFunction1, #B>).arrow.core.raise/toEither(): arrow.core/Either<#A, #B> // arrow.core.raise/toEither|toEither@kotlin.coroutines.SuspendFunction1,0:1>(){0§;1§}[0] final suspend fun <#A: kotlin/Any?, #B: kotlin/Any?> (kotlin.coroutines/SuspendFunction1, #B>).arrow.core.raise/toIor(): arrow.core/Ior<#A, #B> // arrow.core.raise/toIor|toIor@kotlin.coroutines.SuspendFunction1,0:1>(){0§;1§}[0] diff --git a/arrow-libs/core/arrow-core/api/jvm/arrow-core.api b/arrow-libs/core/arrow-core/api/jvm/arrow-core.api index de83b2227a1..aed666c09da 100644 --- a/arrow-libs/core/arrow-core/api/jvm/arrow-core.api +++ b/arrow-libs/core/arrow-core/api/jvm/arrow-core.api @@ -979,7 +979,7 @@ public class arrow/core/raise/RaiseAccumulate : arrow/core/raise/Raise { public final fun ensureNotNullOrAccumulate (Ljava/lang/Object;Lkotlin/jvm/functions/Function0;)Larrow/core/raise/RaiseAccumulate$Value; public final fun ensureOrAccumulate (ZLkotlin/jvm/functions/Function0;)V public final fun getRaise ()Larrow/core/raise/Raise; - public final fun getValue (Larrow/core/raise/RaiseAccumulate$Value;Ljava/lang/Void;Lkotlin/reflect/KProperty;)Ljava/lang/Object; + public final synthetic fun getValue (Larrow/core/raise/RaiseAccumulate$Value;Ljava/lang/Void;Lkotlin/reflect/KProperty;)Ljava/lang/Object; public final fun hasErrors ()Z public fun invoke (Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; public fun invoke (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; @@ -995,6 +995,7 @@ public class arrow/core/raise/RaiseAccumulate : arrow/core/raise/Raise { public final class arrow/core/raise/RaiseAccumulate$Error : arrow/core/raise/RaiseAccumulate$Value { public fun (Larrow/core/raise/RaiseAccumulate;)V + public final fun getRaise ()Larrow/core/raise/RaiseAccumulate; public synthetic fun getValue ()Ljava/lang/Object; public fun getValue ()Ljava/lang/Void; } @@ -1004,8 +1005,9 @@ public final class arrow/core/raise/RaiseAccumulate$Ok : arrow/core/raise/RaiseA public fun getValue ()Ljava/lang/Object; } -public abstract interface class arrow/core/raise/RaiseAccumulate$Value { +public abstract class arrow/core/raise/RaiseAccumulate$Value { public abstract fun getValue ()Ljava/lang/Object; + public final fun getValue (Ljava/lang/Void;Lkotlin/reflect/KProperty;)Ljava/lang/Object; } public abstract class arrow/core/raise/RaiseCancellationException : java/util/concurrent/CancellationException { @@ -1173,3 +1175,56 @@ public final class arrow/core/raise/Trace { public final synthetic fun unbox-impl ()Ljava/util/concurrent/CancellationException; } +public final class arrow/core/raise/context/RaiseContextualKt { + public static final fun accumulate (Larrow/core/raise/Raise;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; + public static final fun accumulating (Larrow/core/raise/RaiseAccumulate;Lkotlin/jvm/functions/Function1;)Larrow/core/raise/RaiseAccumulate$Value; + public static final fun bind (Larrow/core/raise/Raise;Larrow/core/Either;)Ljava/lang/Object; + public static final fun bind (Larrow/core/raise/Raise;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static final fun bind (Larrow/core/raise/ResultRaise;Ljava/lang/Object;)Ljava/lang/Object; + public static final fun bind (Larrow/core/raise/SingletonRaise;Larrow/core/Option;)Ljava/lang/Object; + public static final fun bind (Larrow/core/raise/SingletonRaise;Ljava/lang/Object;)Ljava/lang/Object; + public static final fun bindAllEither (Larrow/core/raise/Raise;Ljava/lang/Iterable;)Ljava/util/List; + public static final fun bindAllEither (Larrow/core/raise/Raise;Ljava/util/List;)Ljava/util/List; + public static final fun bindAllEither (Larrow/core/raise/Raise;Ljava/util/Map;)Ljava/util/Map; + public static final fun bindAllEither (Larrow/core/raise/Raise;Ljava/util/Set;)Ljava/util/Set; + public static final fun bindAllNullable (Larrow/core/raise/SingletonRaise;Ljava/lang/Iterable;)Ljava/util/List; + public static final fun bindAllNullable (Larrow/core/raise/SingletonRaise;Ljava/util/List;)Ljava/util/List; + public static final fun bindAllNullable (Larrow/core/raise/SingletonRaise;Ljava/util/Map;)Ljava/util/Map; + public static final fun bindAllNullable (Larrow/core/raise/SingletonRaise;Ljava/util/Set;)Ljava/util/Set; + public static final fun bindAllOption (Larrow/core/raise/SingletonRaise;Ljava/lang/Iterable;)Ljava/util/List; + public static final fun bindAllOption (Larrow/core/raise/SingletonRaise;Ljava/util/List;)Ljava/util/List; + public static final fun bindAllOption (Larrow/core/raise/SingletonRaise;Ljava/util/Map;)Ljava/util/Map; + public static final fun bindAllOption (Larrow/core/raise/SingletonRaise;Ljava/util/Set;)Ljava/util/Set; + public static final fun bindAllOrAccumulate (Larrow/core/raise/RaiseAccumulate;Ljava/lang/Iterable;)Larrow/core/raise/RaiseAccumulate$Value; + public static final fun bindAllResult (Larrow/core/raise/ResultRaise;Ljava/lang/Iterable;)Ljava/util/List; + public static final fun bindAllResult (Larrow/core/raise/ResultRaise;Ljava/util/List;)Ljava/util/List; + public static final fun bindAllResult (Larrow/core/raise/ResultRaise;Ljava/util/Map;)Ljava/util/Map; + public static final fun bindAllResult (Larrow/core/raise/ResultRaise;Ljava/util/Set;)Ljava/util/Set; + public static final fun bindNel (Larrow/core/raise/RaiseAccumulate;Larrow/core/Either;)Ljava/lang/Object; + public static final fun bindNelOrAccumulate (Larrow/core/raise/RaiseAccumulate;Larrow/core/Either;)Larrow/core/raise/RaiseAccumulate$Value; + public static final fun bindOrAccumulate (Larrow/core/raise/RaiseAccumulate;Larrow/core/Either;)Larrow/core/raise/RaiseAccumulate$Value; + public static final fun either (Lkotlin/jvm/functions/Function1;)Larrow/core/Either; + public static final fun ensure (Larrow/core/raise/Raise;ZLkotlin/jvm/functions/Function0;)V + public static final fun ensureNotNull (Larrow/core/raise/Raise;Ljava/lang/Object;Lkotlin/jvm/functions/Function0;)Ljava/lang/Object; + public static final fun ensureNotNullOrAccumulate (Larrow/core/raise/RaiseAccumulate;Ljava/lang/Object;Lkotlin/jvm/functions/Function0;)Larrow/core/raise/RaiseAccumulate$Value; + public static final fun ensureOrAccumulate (Larrow/core/raise/RaiseAccumulate;ZLkotlin/jvm/functions/Function0;)V + public static final fun impure (Lkotlin/jvm/functions/Function1;)V + public static final fun ior (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;)Larrow/core/Ior; + public static final fun iorNel (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;)Larrow/core/Ior; + public static synthetic fun iorNel$default (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Larrow/core/Ior; + public static final fun mapOrAccumulate (Larrow/core/raise/Raise;Ljava/lang/Iterable;Lkotlin/jvm/functions/Function2;)Ljava/util/List; + public static final fun mapOrAccumulate (Larrow/core/raise/Raise;Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function2;)Ljava/util/List; + public static final fun mapOrAccumulate-l8IBlHg (Larrow/core/raise/Raise;Ljava/util/List;Lkotlin/jvm/functions/Function2;)Ljava/util/List; + public static final fun mapValuesOrAccumulate (Larrow/core/raise/Raise;Ljava/util/Map;Lkotlin/jvm/functions/Function2;)Ljava/util/Map; + public static final fun nullable (Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; + public static final fun option (Lkotlin/jvm/functions/Function1;)Larrow/core/Option; + public static final fun raise (Larrow/core/raise/Raise;Ljava/lang/Object;)Ljava/lang/Void; + public static final fun result (Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; + public static final fun singleton (Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; + public static final fun withError (Larrow/core/raise/Raise;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; + public static final fun withNel (Larrow/core/raise/RaiseAccumulate;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; + public static final fun zipOrAccumulate (Larrow/core/raise/Raise;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function4;)Ljava/lang/Object; + public static final fun zipOrAccumulate (Larrow/core/raise/Raise;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;)Ljava/lang/Object; + public static final fun zipOrAccumulate (Larrow/core/raise/Raise;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +} + diff --git a/arrow-libs/core/arrow-core/build.gradle.kts b/arrow-libs/core/arrow-core/build.gradle.kts index 6c5bda5089c..24faf769a7f 100644 --- a/arrow-libs/core/arrow-core/build.gradle.kts +++ b/arrow-libs/core/arrow-core/build.gradle.kts @@ -4,9 +4,10 @@ plugins { id("arrow.kotlin") } +@OptIn(ExperimentalKotlinGradlePluginApi::class) kotlin { - @OptIn(ExperimentalKotlinGradlePluginApi::class) compilerOptions.freeCompilerArgs.add("-Xexpect-actual-classes") + compilerOptions.freeCompilerArgs.add("-Xcontext-parameters") sourceSets { commonMain { diff --git a/arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/raise/Builders.kt b/arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/raise/Builders.kt index 276eba6f9bc..ae70e65a219 100644 --- a/arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/raise/Builders.kt +++ b/arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/raise/Builders.kt @@ -171,8 +171,9 @@ public class SingletonRaise(private val raise: Raise): Raise { @RaiseDSL public fun Option.bind(): A { - contract { returns() implies (this@bind is Some) } - return getOrElse { raise() } + contract { returns() implies (this@bind is Some) } + ensure(this is Some) + return value } @RaiseDSL diff --git a/arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/raise/Raise.kt b/arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/raise/Raise.kt index c42d534526d..d9105fc28eb 100644 --- a/arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/raise/Raise.kt +++ b/arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/raise/Raise.kt @@ -272,10 +272,13 @@ public interface Raise { * * */ - @RaiseDSL - public fun Either.bind(): A = when (this) { - is Either.Left -> raise(value) - is Either.Right -> value + @RaiseDSL @Suppress("CONTRACT_NOT_ALLOWED") + public fun Either.bind(): A { + contract { returns() implies (this@bind is Either.Right) } + when (this) { + is Either.Left -> raise(value) + is Either.Right -> return value + } } /** diff --git a/arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/raise/RaiseAccumulate.kt b/arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/raise/RaiseAccumulate.kt index 0c7a0533796..15fbe902a73 100644 --- a/arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/raise/RaiseAccumulate.kt +++ b/arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/raise/RaiseAccumulate.kt @@ -986,21 +986,30 @@ public open class RaiseAccumulate( Ok(block(RaiseAccumulate(this@inner))) }) { addErrors(it) - Error() + Error(this) } } + @Suppress("NOTHING_TO_INLINE") + @Deprecated(message = "Deprecated in favor of member", level = DeprecationLevel.HIDDEN) public inline operator fun Value.getValue(thisRef: Nothing?, property: KProperty<*>): A = value - public sealed interface Value { - public val value: A + public sealed class Value { + public abstract val value: A + + @Suppress("NOTHING_TO_INLINE") + public inline operator fun getValue(thisRef: Nothing?, property: KProperty<*>): A = value } - @PublishedApi internal inner class Error: Value { + @PublishedApi internal class Error( + val raise: RaiseAccumulate<*> + ): Value() { // WARNING: do not turn this into a property with initializer!! // 'raiseErrors' is then executed eagerly, and leads to wrong behavior!! - override val value get(): Nothing = raiseErrors() + override val value get(): Nothing = raise.raiseErrors() } - @PublishedApi internal class Ok(override val value: A): Value + @PublishedApi internal class Ok(override val value: A): Value() } + + diff --git a/arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/raise/context/Builders.kt b/arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/raise/context/Builders.kt new file mode 100644 index 00000000000..6e9c4cac7ff --- /dev/null +++ b/arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/raise/context/Builders.kt @@ -0,0 +1,51 @@ +@file:OptIn(ExperimentalTypeInference::class) +@file:JvmMultifileClass +@file:JvmName("RaiseContextualKt") + +package arrow.core.raise.context + +import arrow.core.Either +import arrow.core.Ior +import arrow.core.IorNel +import arrow.core.NonEmptyList +import arrow.core.None +import arrow.core.Option +import arrow.core.raise.IorRaise +import kotlin.experimental.ExperimentalTypeInference +import kotlin.jvm.JvmMultifileClass +import kotlin.jvm.JvmName + +public inline fun either( + @BuilderInference block: context(Raise) () -> A +): Either = arrow.core.raise.either(block) + +public inline fun nullable( + block: context(SingletonRaise) () -> A +): A? = arrow.core.raise.nullable(block) + +public inline fun result( + block: context(ResultRaise) () -> A +): Result = arrow.core.raise.result(block) + +public inline fun option( + block: context(SingletonRaise) () -> A +): Option = arrow.core.raise.option(block) + +public inline fun singleton( + raise: () -> A, + @BuilderInference block: context(SingletonRaise) () -> A +): A = arrow.core.raise.singleton(raise, block) + +public inline fun ior( + noinline combineError: (Error, Error) -> Error, + @BuilderInference block: context(IorRaise) () -> A +): Ior = arrow.core.raise.ior(combineError, block) + +public inline fun iorNel( + noinline combineError: (NonEmptyList, NonEmptyList) -> NonEmptyList = { a, b -> a + b }, + @BuilderInference block: context(IorRaise>) () -> A +): IorNel = arrow.core.raise.iorNel(combineError, block) + +public inline fun impure( + block: context(SingletonRaise) () -> Unit +): Unit = arrow.core.raise.impure(block) diff --git a/arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/raise/context/RaiseAccumulateContext.kt b/arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/raise/context/RaiseAccumulateContext.kt new file mode 100644 index 00000000000..cdc3deeedb5 --- /dev/null +++ b/arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/raise/context/RaiseAccumulateContext.kt @@ -0,0 +1,120 @@ +@file:OptIn(ExperimentalTypeInference::class, ExperimentalContracts::class) +@file:JvmMultifileClass +@file:JvmName("RaiseContextualKt") +@file:Suppress("LEAKED_IN_PLACE_LAMBDA") + +package arrow.core.raise.context + +import arrow.core.Either +import arrow.core.EitherNel +import arrow.core.NonEmptyList +import arrow.core.raise.ExperimentalRaiseAccumulateApi +import arrow.core.raise.RaiseAccumulate.Value +import arrow.core.raise.RaiseDSL +import kotlin.contracts.ExperimentalContracts +import kotlin.contracts.InvocationKind.AT_MOST_ONCE +import kotlin.contracts.contract +import arrow.core.raise.accumulate as accumulateExt +import arrow.core.raise.mapOrAccumulate as mapOrAccumulateExt +import arrow.core.raise.mapValuesOrAccumulate as mapValuesOrAccumulateExt +import arrow.core.raise.zipOrAccumulate as zipOrAccumulateExt +import kotlin.experimental.ExperimentalTypeInference +import kotlin.jvm.JvmMultifileClass +import kotlin.jvm.JvmName + +public typealias RaiseAccumulate = arrow.core.raise.RaiseAccumulate + +context(raise: Raise>) +@ExperimentalRaiseAccumulateApi @RaiseDSL public inline fun accumulate( + block: context(RaiseAccumulate) () -> A +): A = raise.accumulateExt(block) + +context(raise: Raise>) +@RaiseDSL public inline fun Iterable.mapOrAccumulate( + @BuilderInference transform: context(RaiseAccumulate) (A) -> B +): List = raise.mapOrAccumulateExt(this, transform) + +context(raise: Raise>) +@RaiseDSL public inline fun Sequence.mapOrAccumulate( + @BuilderInference transform: context(RaiseAccumulate) (A) -> B +): List = raise.mapOrAccumulateExt(this, transform) + +context(raise: Raise>) +@RaiseDSL public inline fun NonEmptyList.mapOrAccumulate( + @BuilderInference transform: context(RaiseAccumulate) (A) -> B +): NonEmptyList = raise.mapOrAccumulateExt(this, transform) + +context(raise: Raise>) +@RaiseDSL public inline fun Map.mapValuesOrAccumulate( + @BuilderInference transform: context(RaiseAccumulate) (Map.Entry) -> B +): Map = raise.mapValuesOrAccumulateExt(this, transform) + +context(raise: Raise>) +@RaiseDSL public inline fun zipOrAccumulate( + @BuilderInference action1: context(RaiseAccumulate) () -> A, + @BuilderInference action2: context(RaiseAccumulate) () -> B, + block: (A, B) -> C +): C = raise.zipOrAccumulateExt(action1, action2, block) + +context(raise: Raise>) +@RaiseDSL public inline fun zipOrAccumulate( + @BuilderInference action1: context(RaiseAccumulate) () -> A, + @BuilderInference action2: context(RaiseAccumulate) () -> B, + @BuilderInference action3: context(RaiseAccumulate) () -> C, + block: (A, B, C) -> D +): D = raise.zipOrAccumulateExt(action1, action2, action3, block) + +context(raise: Raise>) +@RaiseDSL public inline fun zipOrAccumulate( + @BuilderInference action1: context(RaiseAccumulate) () -> A, + @BuilderInference action2: context(RaiseAccumulate) () -> B, + @BuilderInference action3: context(RaiseAccumulate) () -> C, + @BuilderInference action4: context(RaiseAccumulate) () -> D, + block: (A, B, C, D) -> E +): E = raise.zipOrAccumulateExt(action1, action2, action3, action4, block) + +@RaiseDSL +context(raise: RaiseAccumulate) +public fun EitherNel.bindNel(): A = + with(raise) { this@bindNel.bindNel() } + +@RaiseDSL +context(raise: RaiseAccumulate) +public inline fun withNel(block: context(Raise>) () -> A): A = + with(raise) { withNel(block) } + +@ExperimentalRaiseAccumulateApi @RaiseDSL +context(raise: RaiseAccumulate) +public fun Either.bindOrAccumulate(): Value = + with(raise) { this@bindOrAccumulate.bindOrAccumulate() } + +@ExperimentalRaiseAccumulateApi @RaiseDSL +context(raise: RaiseAccumulate) +public fun Iterable>.bindAllOrAccumulate(): Value> = + with(raise) { this@bindAllOrAccumulate.bindAllOrAccumulate() } + +@ExperimentalRaiseAccumulateApi @RaiseDSL +context(raise: RaiseAccumulate) +public fun EitherNel.bindNelOrAccumulate(): Value = + with(raise) { this@bindNelOrAccumulate.bindNelOrAccumulate() } + +@ExperimentalRaiseAccumulateApi @RaiseDSL +context(raise: RaiseAccumulate) +public inline fun ensureOrAccumulate(condition: Boolean, error: () -> Error) { + contract { callsInPlace(error, AT_MOST_ONCE) } + with(raise) { ensureOrAccumulate(condition, error) } +} + +@ExperimentalRaiseAccumulateApi @RaiseDSL +context(raise: RaiseAccumulate) +public inline fun ensureNotNullOrAccumulate(value: B?, error: () -> Error): Value { + contract { callsInPlace(error, AT_MOST_ONCE) } + return with(raise) { ensureNotNullOrAccumulate(value, error) } +} + +@ExperimentalRaiseAccumulateApi @RaiseDSL +context(raise: RaiseAccumulate) +public inline fun accumulating(block: context(RaiseAccumulate) () -> A): Value { + contract { callsInPlace(block, AT_MOST_ONCE) } + return with(raise) { accumulating(block) } +} diff --git a/arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/raise/context/RaiseContext.kt b/arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/raise/context/RaiseContext.kt new file mode 100644 index 00000000000..2481d9cbc67 --- /dev/null +++ b/arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/raise/context/RaiseContext.kt @@ -0,0 +1,132 @@ +@file:OptIn(ExperimentalTypeInference::class, ExperimentalContracts::class) +@file:JvmMultifileClass +@file:JvmName("RaiseContextualKt") + +package arrow.core.raise.context + +import arrow.core.Either +import arrow.core.NonEmptyList +import arrow.core.NonEmptySet +import arrow.core.Option +import arrow.core.Some +import arrow.core.raise.Effect +import arrow.core.raise.RaiseDSL +import arrow.core.raise.ensure as ensureExt +import arrow.core.raise.ensureNotNull as ensureNotNullExt +import arrow.core.raise.withError as withErrorExt +import kotlin.contracts.ExperimentalContracts +import kotlin.contracts.contract +import kotlin.experimental.ExperimentalTypeInference +import kotlin.jvm.JvmMultifileClass +import kotlin.jvm.JvmName + +public typealias Raise = arrow.core.raise.Raise +public typealias SingletonRaise = arrow.core.raise.SingletonRaise +public typealias ResultRaise = arrow.core.raise.ResultRaise + +context(raise: Raise) @RaiseDSL public fun raise(e: Error): Nothing = + raise.raise(e) + +context(raise: Raise) @RaiseDSL public inline fun ensure(condition: Boolean, otherwise: () -> Error) { + contract { returns() implies condition } + raise.ensureExt(condition, otherwise) +} + +context(raise: Raise) @RaiseDSL public inline fun ensureNotNull(value: B?, otherwise: () -> Error): B { + contract { returns() implies (value != null) } + return raise.ensureNotNullExt(value, otherwise) +} + +context(raise: Raise) @RaiseDSL public inline fun withError( + transform: (OtherError) -> Error, + @BuilderInference block: context(Raise) () -> A +): A = raise.withErrorExt(transform, block) + +context(raise: Raise) @RaiseDSL public suspend fun Effect.bind(): A = + with(raise) { bind() } + +@Suppress("WRONG_IMPLIES_CONDITION") +context(raise: Raise) @RaiseDSL public fun Either.bind(): A { + contract { returns() implies (this@bind is Either.Right) } + return with(raise) { this@bind.bind() } +} + +@Suppress("WRONG_IMPLIES_CONDITION") +context(raise: SingletonRaise) @RaiseDSL public fun Option.bind(): A { + contract { returns() implies (this@bind is Some) } + return with(raise) { this@bind.bind() } +} + +@Suppress("WRONG_IMPLIES_CONDITION") +context(raise: SingletonRaise) @RaiseDSL public fun A?.bind(): A { + contract { returns() implies (this@bind != null) } + return with(raise) { this@bind.bind() } +} + +context(raise: ResultRaise) @RaiseDSL public fun Result.bind(): A { + return with(raise) { this@bind.bind() } +} + +context(raise: Raise) @RaiseDSL @JvmName("bindAllEither") +public fun Map>.bindAll(): Map = + with(raise) { bindAll() } + +context(raise: Raise) @RaiseDSL @JvmName("bindAllEither") +public fun Iterable>.bindAll(): List = + with(raise) { bindAll() } + +context(raise: Raise) @RaiseDSL @JvmName("bindAllEither") +public fun NonEmptyList>.bindAll(): NonEmptyList = + with(raise) { bindAll() } + +context(raise: Raise) @RaiseDSL @JvmName("bindAllEither") +public fun NonEmptySet>.bindAll(): NonEmptySet = + with(raise) { bindAll() } + +context(raise: SingletonRaise) @RaiseDSL @JvmName("bindAllOption") +public fun Map>.bindAll(): Map = + with(raise) { bindAll() } + +context(raise: SingletonRaise) @RaiseDSL @JvmName("bindAllOption") +public fun Iterable>.bindAll(): List = + with(raise) { bindAll() } + +context(raise: SingletonRaise) @RaiseDSL @JvmName("bindAllOption") +public fun NonEmptyList>.bindAll(): NonEmptyList = + with(raise) { bindAll() } + +context(raise: SingletonRaise) @RaiseDSL @JvmName("bindAllOption") +public fun NonEmptySet>.bindAll(): NonEmptySet = + with(raise) { bindAll() } + +context(raise: SingletonRaise) @RaiseDSL @JvmName("bindAllNullable") +public fun Map.bindAll(): Map = + with(raise) { bindAll() } + +context(raise: SingletonRaise) @RaiseDSL @JvmName("bindAllNullable") +public fun Iterable.bindAll(): List = + with(raise) { bindAll() } + +context(raise: SingletonRaise) @RaiseDSL @JvmName("bindAllNullable") +public fun NonEmptyList.bindAll(): NonEmptyList = + with(raise) { bindAll() } + +context(raise: SingletonRaise) @RaiseDSL @JvmName("bindAllNullable") +public fun NonEmptySet.bindAll(): NonEmptySet = + with(raise) { bindAll() } + +context(raise: ResultRaise) @RaiseDSL @JvmName("bindAllResult") +public fun Map>.bindAll(): Map = + with(raise) { bindAll() } + +context(raise: ResultRaise) @RaiseDSL @JvmName("bindAllResult") +public fun Iterable>.bindAll(): List = + with(raise) { bindAll() } + +context(raise: ResultRaise) @RaiseDSL @JvmName("bindAllResult") +public fun NonEmptyList>.bindAll(): NonEmptyList = + with(raise) { bindAll() } + +context(raise: ResultRaise) @RaiseDSL @JvmName("bindAllResult") +public fun NonEmptySet>.bindAll(): NonEmptySet = + with(raise) { bindAll() } diff --git a/arrow-libs/core/arrow-core/src/commonTest/kotlin/arrow/core/usage/Context.kt b/arrow-libs/core/arrow-core/src/commonTest/kotlin/arrow/core/usage/Context.kt new file mode 100644 index 00000000000..332cf885d4b --- /dev/null +++ b/arrow-libs/core/arrow-core/src/commonTest/kotlin/arrow/core/usage/Context.kt @@ -0,0 +1,38 @@ +package arrow.core.usage + +import arrow.core.Either +import arrow.core.raise.context.* + +// this file checks that everything still resolves +// once the context parameter versions are used + +fun example1(x: Int): Either = either { + ensure(x > 0) { "x is not positive" } + x + 1 +} + +context(_: Raise) +fun example2a(x: Int): Int { + ensure(x > 0) { "x is not positive" } + return x + 1 +} + +fun example2b(x: Int): Either = either { example2a(x) } + +context(_: Raise) +fun example3(x: Int): Int = + withError(transform = { it.uppercase() }) { + example1(x).bind() + } + +context(_: Raise) +fun example3a(x: Int): Int = + withError(transform = { it.uppercase() }) { + example2a(x) + } + +context(_: Raise) +fun example3b(x: Int): Int = + withError(transform = { it.uppercase() }) { + example2b(x).bind() + }