Eugenio
02/19/2017, 5:39 PMinterface AndThen<T>
inline fun <T : AndThen<T>, U> T.andThen(func: (T) -> AndThen<U>): AndThen<U> = func(this)
inline val <T : AndThen<T>> T.value get() = this
sealed class Result<T> : AndThen<Result<T>>
data class SuccessWithValue<T>(val result: T) : Result<T>()
class Success<T>() : Result<T>()
data class Failure<T>(val error: Exception) : Result<T>()