Wrote up a <feature request> to support 2nd-order ...
# arrow
y
Wrote up a feature request to support 2nd-order function inlining in Kotlin. Basically, this would allow for optimising
Raise
completely on both the happy and error paths by utilising non-local returns. Might be an interesting thought exercise! It boils down to the pattern of:
Copy code
val value = someValue.getOrElse { return Either.Left(it) } 
someFunction(value).getOrElse { return Either.Left(it) }
by turning
return Etiher.Left(it)
into a function that's available only locally within an "anonymous lambda inline function". The gist of it is it would allow:
Copy code
either { raise: (String) -> Nothing ->
  someFunction(arg, raise)
}
or, if the extra possibility of functional context receivers being inlined is implemented:
Copy code
either {
  someFunction(arg)
}
but with no exception throwing magic! It would also allow for things like
break
within a
forEach
😍 2
👍 1