def f(implicit a: A, implicit b: B)
def withA(block: A => Unit) = {
block(A(...))
}
def withB(block: B => Unit) = {
block(B(...))
}
def main() = withA { implicit a: A =>
withB { implicit b: B =>
f
}
}
Но факт в том, что в Dotty DSL можно строить более мощные, чем в Котлине.