diff --git a/src/main/kotlin/moe/kageru/kagebot/extensions/ArrowExtensions.kt b/src/main/kotlin/moe/kageru/kagebot/extensions/ArrowExtensions.kt index 10a22d8..95baaa3 100644 --- a/src/main/kotlin/moe/kageru/kagebot/extensions/ArrowExtensions.kt +++ b/src/main/kotlin/moe/kageru/kagebot/extensions/ArrowExtensions.kt @@ -5,13 +5,17 @@ import arrow.core.Either import arrow.core.Tuple3 import arrow.core.getOrElse import arrow.typeclasses.Functor +import moe.kageru.kagebot.Log fun Either.on(op: (R) -> Unit): Either { this.map { op(it) } return this } -fun Either<*, T>.unwrap(): T = getOrElse { error("Attempted to unwrap Either.left") } +fun Either<*, T>.unwrap(): T = getOrElse { + Log.warn("Attempted to unwrap $this") + error("Attempted to unwrap Either.left") +} inline fun Tuple3.mapFirst(AP: Functor, op: (A) -> Kind) = let { (a, b, c) -> AP.run { op(a).map { Tuple3(it, b, c) } }