Kotlin VS Scala: Implementar methods con parameters constructor primarios

En Scala puedes escribir código como este.

trait List[T] { def isEmpty() :Boolean def head() : T def tail() : List[T] } class Cons[T](val head: T, val tail: List[T]) :List[T] { def isEmpty = false } 

no es necesario que anules la queue y la cabeza ya están definidos, pero en Kotlin tuve que codificar esto.

 interface List<T> { fun isEmpty() :Boolean fun head() : T fun tail() : List<T> } class Cons<T>(val head: T, val tail: List<T>) :List<T> { override fun isEmpty() = false override fun head() = head override fun tail() = tail } 

Mi pregunta es "¿es una mejor forma de escribir mi código de Kotlin?"