Yes, my thoughts exactly.
This problem is not solved by monads, but by higher kinded types in general in languages like Haskell. They give you a uniform way to be generic over effects like async (Async<A>
) vs sync (Identity<A>
). Both of these can be treated as (F<A>
) for all A
. So a generic Into
would look like the following, and no special syntax or semantics would be needed. The type system (if sound) would prevent you from misusing a trait like this.
trait Into<F,T> {
def into(self): F<T>;
}
RSS link so you can add it to your preferred podcast client (I use AntennaPod) -
ChinaTalk https://chinatalk.substack.com/
RSS address: https://feeds.megaphone.fm/CHTAL4990341033