"Extension types" for Kotlin

It seems to me that as long as you are fine with EXPLICIT vs. implicit then you can basically do it now like this:

val String.monoid get() = object : Monoid<String> {
    override fun zero() = ""
    override fun append( a1: String, a2: String) = a1 + a2
}

Then you can just do MyString.monoid to explicitly convert to a monoid.

If you want implicit conversion aren’t you then moving to morass of implicit conversion that lead IntelliJ to reject Scala and create Kotlin to begin with?