Bob Glamm
06/26/2019, 8:26 PM<F> in something like the following:
interface S3Ops<F>: MonadDefer<F> {
val s3: AmazonS3
fun getS3Info(bucket: String, key: String): Kind<F, S3Object> {
val waiterRequest = GetObjectMetadataRequest(bucket, key)
return catch { s3.waiters().objectExists().run(WaiterParameters(waiterRequest)) }
.flatMap {
val objectRequest = GetObjectRequest(bucket, key)
catch { s3.getObject(objectRequest) }
}.flatMap {
if (it == null) {
raiseError(RuntimeException("No object retrieved from S3"))
} else {
just(it)
}
}
}pakoito
06/26/2019, 8:31 PMobject IOBla: S3Ops<F>, MonadDefer<F> by IO.monadDefer() {
override val s3: AmazonS3 = s3()
}pakoito
06/26/2019, 8:31 PMobject RxBla: S3Ops<F>, MonadDefer<F> by Observable.monadDefer() {
override val s3: AmazonS3 = s3()
}pakoito
06/26/2019, 8:31 PMpakoito
06/26/2019, 8:32 PMBob Glamm
06/26/2019, 8:32 PMBob Glamm
06/26/2019, 8:33 PMpakoito
06/26/2019, 8:33 PMpakoito
06/26/2019, 8:33 PMpakoito
06/26/2019, 8:34 PMBob Glamm
06/26/2019, 8:34 PMBob Glamm
06/26/2019, 8:34 PMBob Glamm
06/26/2019, 8:36 PMBob Glamm
06/26/2019, 8:37 PMF has to be MonadDefer instead of the general F in the paperBob Glamm
06/26/2019, 8:37 PMpakoito
06/26/2019, 8:38 PMpakoito
06/26/2019, 8:38 PMpakoito
06/26/2019, 8:38 PMpakoito
06/26/2019, 8:38 PMpakoito
06/26/2019, 8:38 PMBob Glamm
06/26/2019, 8:39 PMpakoito
06/26/2019, 8:39 PMpakoito
06/26/2019, 8:39 PMpakoito
06/26/2019, 8:40 PMBob Glamm
06/26/2019, 8:42 PMpakoito
06/26/2019, 8:42 PMBob Glamm
06/27/2019, 1:18 PMpakoito
06/27/2019, 1:33 PMpakoito
06/27/2019, 1:34 PMpakoito
06/27/2019, 1:34 PMpakoito
06/27/2019, 1:34 PMpakoito
06/27/2019, 1:35 PMpakoito
06/27/2019, 1:35 PMFpakoito
06/27/2019, 1:36 PMpakoito
06/27/2019, 1:36 PMBob Glamm
06/27/2019, 1:39 PM