``` interface Monoid<A> extension class Opt...
# arrow-contributors
r
Copy code
interface Monoid<A>

extension class OptionMonoid<A>(with Monoid<A>) : Monoid<Option<A>>

fun doWithOptionMonoid(with Monoid<Option<A>>) = TODO()
The compiler would need to desugar this as:
Copy code
fun doWithOptionMonoid($ev: Monoid<Option<A>> = new OptionMonoid(AMonoid)) = with ($ev) { TODO() }