Remember the transformation we applied to a synchronous type signature to make it asynchronous:
fun program(a: A): B {}
fun program(a: A, k: (B) -> Unit) {}
What if we could model an asynchronous result of type T as a return type Future<T>
?
fun program(a: A): Future<B> {}