fun f(x: Int): Int = x * x fun g(x: Int): Int = x + 2 fun compose(f: (V) -> R, g: (T) -> V): (T) -> R = { f(g(it) } fun main() { val x = 10 println(compose(::f, ::g)(x)) }