• 1 Post
  • 3 Comments
Joined 11 months ago
cake
Cake day: January 31st, 2024

help-circle

  • 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) vs sync (Identity). Both of these can be treated as (F) 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 {
       def into(self): F;
    }