pakoito
fun <F> deserializeWithError(ME: MonadError<F, Throwable>, value: Kind<F, String>): Kind<F, UserDto> = ME.run { value.flatMap { try { just(deserialize(it)) } catch (e: Throwable) { raiseError(e) } }