import kyo.*val a: Unit < IO = IO(println("hello"))def example2( a: Int < IO, b: Int < Abort[Exception]): Int < (IO & Abort[Exception]) = a.map(v => b.map(_ + v))val a: Int < (Abort[String] & Env[Int]) = for v <- Abort.get(Right(42)) e <- Env.get[Int] yield v + e
trait Database: def count: Int < IOval a: Database < Env[Database] = Env.get[Database]val b: Int < (Env[Database] & IO) = a.map(_.count)val db = new Database: def count = 1val c: Int < IO = Env.run(db)(b)